Image 如何通过点击按钮在一张纸上打印
我正在寻找一种使用按钮OnClick事件打印页面的解决方案 让我举个例子: 通过按钮OnClick事件,代码将随机地将某些图像放置在彼此相邻的位置。每次点击,我都希望这些图片要么相同,要么不同的按钮打印在一张纸上Image 如何通过点击按钮在一张纸上打印,image,delphi,printing,delphi-7,Image,Delphi,Printing,Delphi 7,我正在寻找一种使用按钮OnClick事件打印页面的解决方案 让我举个例子: 通过按钮OnClick事件,代码将随机地将某些图像放置在彼此相邻的位置。每次点击,我都希望这些图片要么相同,要么不同的按钮打印在一张纸上 我尝试在工具栏中搜索与Delphi和打印机的任何连接,但没有成功。原则上,使用Delphi打印非常容易。基本上,您可以在页面的画布上进行绘制,就像使用VCL(即使用Windows GDI)在屏幕画布上进行绘制一样 下面是一个非常简单的例子: procedure PrintRects;
我尝试在工具栏中搜索与Delphi和打印机的任何连接,但没有成功。原则上,使用Delphi打印非常容易。基本上,您可以在页面的画布上进行绘制,就像使用VCL(即使用Windows GDI)在屏幕画布上进行绘制一样 下面是一个非常简单的例子:
procedure PrintRects;
const
Offset = 100;
RectCountY = 8;
RectCountX = 4;
var
S: string;
TitleRect: TRect;
MainRect: TRect;
j: Integer;
i: Integer;
RectWidth,
RectHeight: Integer;
R: TRect;
function GetRectRect(X, Y: Integer): TRect;
begin
Result := Rect(
MainRect.Left + X * RectWidth,
MainRect.Top + Y * RectHeight,
MainRect.Left + (X + 1) * RectWidth,
MainRect.Top + (Y + 1) * RectHeight
);
end;
begin
with TPrintDialog.Create(nil) do
try
if not Execute then
Exit;
finally
Free;
end;
Printer.BeginDoc;
try
Printer.Canvas.Font.Size := 42;
S := 'My Collection of Rects';
TitleRect := Rect(
Offset,
Offset,
Printer.PageWidth - Offset,
Offset + 2 * Printer.Canvas.TextHeight(S)
);
MainRect := Rect(
Offset,
TitleRect.Bottom + Offset,
Printer.PageWidth - Offset,
Printer.PageHeight - Offset
);
RectWidth := MainRect.Width div RectCountX;
RectHeight := MainRect.Height div RectCountY;
Printer.Canvas.TextRect(TitleRect, S, [tfSingleLine, tfCenter, tfVerticalCenter]);
for j := 0 to RectCountY - 1 do
for i := 0 to RectCountX - 1 do
begin
R := GetRectRect(i, j);
Printer.Canvas.Brush.Color := RGB(Random(255), Random(255), Random(255));
Printer.Canvas.FillRect(R);
end;
finally
Printer.EndDoc;
end;
end;
这将生成以下页面:
不用说,您可以在此网格中打印图像,而不是使用纯色矩形
因此,如果您知道如何使用TCanvas(即Windows GDI)在表单上绘制内容,则可以使用相同的方法在打印页面上绘制
当然,您可以在单击按钮时调用此过程:
procedure TForm1.Button1Click(Sender: TObject);
begin
PrintRects;
end;
最好使用报告库,如QuickReports。@kometa123:如果你想知道为什么你的问题被否决,我想我可以给你一些见解。询问如何使用Delphi打印页面?这可能是个好问题。答案可能会引导您了解印刷的基础知识。当你点击一个按钮时,该代码可以运行1;当你选择一个菜单项时,该代码可以运行2;当你在每个星期天早上03:00时,该代码可以运行3;当你在组合框中更改该项时,该代码可以运行4;当鼠标离开一个进度条时,该代码可以运行5;等等。正如你所看到的,按钮OnClick部分与打印部分无关。然而,你的Q似乎表明这些部分是不可分割的。