stringgrid打印问题(100分)

  • 主题发起人 主题发起人 lihan
  • 开始时间 开始时间
L

lihan

Unregistered / Unconfirmed
GUEST, unregistred user!
为什么我用如下语句却无法打印全部内容,只能打印当前窗口的一部分,比如说,
stringgrid总共有10行,当前显示5行,其余5行得按滚动条才能看到,
打印时只能打印有显示的5行,要怎么办才能打印全部。
with printer do
begin
printer.BeginDoc ;
printer.canvas.font.size:=12;
stringgrid1.paintto(printer.canvas.Handle,10,10 );
printer.endDoc ;
end;
 
自己做定位,用printer.canvas.textout(....)做,很方便的,代码就不写了
也就是一个循环。
 
如果你告诉我具体代码的话,我就给你加上100分
 
具体要求才有具体代码,麻烦一点,先在image上实现
with image1.canvas do begin
....
end;
改为:
with printer.canvas do begin
....
end;
在打印机输出。
 
说得不祥细我还是不明白,请再祥细说明
 
printer.begindoc;
y:=y0;
x:=x0;
with printer.canvas do begin
.....
font.size := 10; //指定字体大小
font.name := '隶书'; //指定字体
....
with stringgrid1 do begin
for i:=1 to RowCount-1 do begin
s:='';
for j:=1 to Colcount-1 do
s:=s+' '+cells[j,i];
y :=y+ textheight(s);
textout(x, y, s);
end;
....
end;
printer.enddoc;

具体x0,y0自己设定;
画表格:(参数自己设定,给出的只是例)
moveto(x2, y - textheight(s) div 2);
lineto(x3, y - textheight(s) div 2);
.....
rectangle(x0, y + Trunc(10 * xb), xn, y1);
 
rm可以打StringGrid
http://www.delphibbs.com/delphibbs/dispq.asp?lid=851577
 
to lihan:

with printer do
begin
printer.BeginDoc ;
printer.canvas.font.size:=12;
for i :=1 to 10 do begin
s :='';
for j :=1 to stringgrid1.col do
s :=s+stringgrid1.cells[j,i];
printer.canvas.textout(10,10,s)
end;
printer.endDoc ;
end;
 
我刚试了不行,怎么只打印出一两个数,不能所有的数都打印出来
 
前面的问题我自已已经搞出来了,不过还有一个问题,就是打印在printer中怎么设置为纵向
打印?(到时候一起加分)
 
说错了是横向打印
 
Printer.Orientation :=poLandscape;
 

Similar threads

后退
顶部