“打印”怎样翻页?(50分)

  • 主题发起人 主题发起人 张强
  • 开始时间 开始时间

张强

Unregistered / Unconfirmed
GUEST, unregistred user!
建了一个DBF的数据库表,想把这个表的内容打印出来,用了下面的程序。
Procedure ...........

const
yy:integer=40;
begin

PrintDialog1.execute;
printer.begin
doc;
table1.first;
while not table.eofdo

begin

printer.cancas.textout(表table1的内容);
yy:=yy+40;
table1.next;
end;

printer.enddoc;
end;

(其中:Table1是Table控件,PrintDialog1是PrintDialog控件)可是,运行后,只能打印一页,就终止了。是不是PrintDialog1.execute;这一句写错了?
应该怎样写呢?(最好提供一段代码。)
先谢了!
 
程序能这么简单吗? 你难道不计算一页打多少行,满页后的换页?
 
printer.canvas.textout(x,y,text)
判断是否大于printer.pageheight
printer.newdoc
 
感谢各位的帮助!按照sherman所讲的办法,现在打印可以翻页了,可是还存在两个
问题:
1.我用的是标准A4打印纸,翻页后,并不是刚好A4的一页长,而是大于A4的一页长,
原因是printer.pageheight大于标准A4打印纸的页长,pageheight这个参数可以更
改吗,怎样给它赋值呢?
我用了
printer.pageheight:=12000;
编译时通不过,怎麽办呢?
2.PrintDialog这个控件好象没有任何作用,我把它去掉了,还照常可以打印。
PrintDialog这个控件有什麽作用呢?

 
感谢各位的帮助!按照sherman所讲的办法,现在打印可以翻页了,可是还存在两个
问题:
1.我用的是标准A4打印纸,翻页后,并不是刚好A4的一页长,而是大于A4的一页长,
原因是printer.pageheight大于标准A4打印纸的页长,pageheight这个参数可以更
改吗,怎样给它赋值呢?
我用了
printer.pageheight:=12000;
编译时通不过,怎麽办呢?
2.PrintDialog这个控件好象没有任何作用,我把它去掉了,还照常可以打印。
PrintDialog这个控件有什麽作用呢?


 
printer.pageheight是readonly属性。
在printsetupdialog中设置纸张,其值会改变。
 
Procedure ...........

const
yy:integer=40;
var pheigth :integer ;//zjuhui add
begin

PrintDialog1.execute;
pheight:=priter.pageheight;//zjuhui add
printer.begin
doc;
table1.first;
while (not table.eof) do

begin
//zjuhui add
if (yy+printer.canvas.textheight('anw'))>pheight then

begin

printer.newpage;
yy:=40;

end;

//zjuhui add

printer.cancas.textout(表table1的内容);
yy:=yy+40;
table1.next;
end;

printer.enddoc;
end;


祝你成功!

 
你应设置纸张大小为A4纸,
printdilog可以设置一些参数,如打印份数等,但需要你在程序中引用其中参数.
 
请接受答案或继续提问
 
若有了其他方法或答案例子,请E-Mail给我,谢谢大家!
 
我建议采用快速报表控件。这样就会自动换页了。。也没这么多麻烦事。。
 
接受答案了.
 
后退
顶部