我做了一个小程序,你输入一堆东西然后把它放到一个丰富的编辑中,但现在我将如何打印丰富的编辑内容?
我在考虑RichEdit1.print();
,但我不知道在括号中放什么。富编辑有6个不同的边距(每个不同的项目2(名称,数量和价格))
如果有人愿意提供帮助,我们将不胜感激!
答案 0 :(得分:2)
传递一个参数,一个包含打印作业名称的字符串。如果要相信documentation,此名称将显示在打印管理器中:
使用“打印”打印丰富的编辑控件的内容。 Caption参数指定出现在打印管理器和网络标题页上的标题。
您还需要在打印前设置PageRect
。这定义了打印机上的页面尺寸。您需要查询所选打印机的设备功能,并应用任何边距。我使用这个辅助函数来做到这一点:
procedure PrintRichEdit(RichEdit: TRichEdit; const Caption: string;
const PrinterMargin: Integer);
//the units of TRichEdit.PageRect are pixels, units of PrinterMargin are mm
var
PrinterHeight, PrinterWidth: Integer;
LogPixels, PrinterTopLeft: TPoint;
PageRect: TRect;
Handle: HDC;
begin
Handle := Printer.Handle;
LogPixels := Point(GetDeviceCaps(Handle, LOGPIXELSX),
GetDeviceCaps(Handle, LOGPIXELSY));
PrinterTopLeft := Point(GetDeviceCaps(Handle, PHYSICALOFFSETX),
GetDeviceCaps(Handle, PHYSICALOFFSETY));
PrinterWidth := Printer.PageWidth;
PrinterHeight := Printer.PageHeight;
PageRect.Left := Max(0, Round(PrinterMargin*LogPixels.X/25.4)
- PrinterTopLeft.X);
PageRect.Top := Max(0, Round(PrinterMargin*LogPixels.Y/25.4)
- PrinterTopLeft.Y);
PageRect.Right := PrinterWidth-PageRect.Left;
PageRect.Bottom := PrinterHeight-PageRect.Top;
if (PageRect.Left>=PageRect.Right) or (PageRect.Top>=PageRect.Bottom) then
//the margins are too big
PageRect := Rect(0, 0, 0, 0);
RichEdit.PageRect := PageRect;
RichEdit.Print(Caption);
end;