如何解决如何在页面中央打印字符串网格?
所以我想在另一个已经打印/页眉和页脚的打印页面的中间/中心打印一个字符串网格,但我不知道如何在页面的中间/中心打印字符串网格? 下面的代码中是否有任何我可以更改的内容?还是我必须完全做其他事情?
预先感谢所有帮助!
我用于其他打印按钮之一的代码:
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,Y2);
Printer.Canvas.TextRect(TR,Y1 + 50,TmpI]);
end;
end;
Printer.EndDoc;
end;
亲切的问候 PrimeBeat
解决方法
您可以获得以像素为单位的打印机宽度和高度(Printer.PageWidth
和 Printer.PageHeight
)。您可以使用 Printer.Canvas.TextExtent
获取文本和高度。你有你的网格,所以你知道行数和列数。剩下的就是一些简单的计算。您可以调整字体大小,使网格适合给定的空间。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。