Delphi 如何在页面中心打印字符串网格?
所以我想在另一个已经有打印/页眉和页脚的打印页面的中间/中心打印字符串网格,但我不确定如何在页面的中间/中心打印字符串网格? 下面的代码中是否有我可以更改的内容?还是我必须完全做别的事情 提前感谢所有的帮助 我必须打印的页面类型示例(在页面的打开部分): 我为另一个也会打印的按钮使用的代码:Delphi 如何在页面中心打印字符串网格?,delphi,printing,tstringgrid,Delphi,Printing,Tstringgrid,所以我想在另一个已经有打印/页眉和页脚的打印页面的中间/中心打印字符串网格,但我不确定如何在页面的中间/中心打印字符串网格? 下面的代码中是否有我可以更改的内容?还是我必须完全做别的事情 提前感谢所有的帮助 我必须打印的页面类型示例(在页面的打开部分): 我为另一个也会打印的按钮使用的代码: procedure PrintGrid(sGrid: TStringGrid; sTitle: string); var X1, X2: Integer; Y1, Y2: Integer; T
procedure PrintGrid(sGrid: TStringGrid; sTitle: string);
var
X1, X2: Integer;
Y1, Y2: Integer;
TmpI: Integer;
F: Integer;
TR: TRect;
begin
Printer.Title := sTitle;
Printer.BeginDoc;
Printer.Canvas.Pen.Color := 0;
Printer.Canvas.Font.Name := 'Times New Roman';
Printer.Canvas.Font.Size := 12;
Printer.Canvas.Font.Style := [fsBold, fsUnderline];
Printer.Canvas.TextOut(0, 100, Printer.Title);
for F := 1 to sGrid.ColCount - 1 do
begin
X1 := 0;
for TmpI := 1 to (F - 1) do
X1 := X1 + 5 * (sGrid.ColWidths[TmpI]);
Y1 := 300;
X2 := 0;
for TmpI := 1 to F do
X2 := X2 + 5 * (sGrid.ColWidths[TmpI]);
Y2 := 450;
TR := Rect(X1, Y1, X2 - 30, Y2);
Printer.Canvas.Font.Style := [fsBold];
Printer.Canvas.Font.Size := 7;
Printer.Canvas.TextRect(TR, X1 + 50, 350, sGrid.Cells[F, 0]);
Printer.Canvas.Font.Style := [];
for TmpI := 1 to sGrid.RowCount - 1 do
begin
Y1 := 150 * TmpI + 300;
Y2 := 150 * (TmpI + 1) + 300;
TR := Rect(X1, Y1, X2 - 30, Y2);
Printer.Canvas.TextRect(TR, X1 + 50, Y1 + 50, sGrid.Cells[F, TmpI]);
end;
end;
Printer.EndDoc;
end;
问候
PrimeBeat您可以以像素为单位获得打印机宽度和高度(
printer.PageWidth
和printer.PageHeight
)。您可以使用Printer.Canvas.TextExtent
获取具有大小和高度的文本。你有你的网格,所以你知道行数和列数。剩下的是一些简单的计算。您可以调整字体大小,使网格适合给定的空间。我不明白您在问什么(或者,实际上为什么要问)。您已经有了打印网格的代码。您应该能够找出这些xn
和yn
是打印位置的坐标,不是吗?因此,根据需要修改这些坐标。