各位大虾春节好!请教:如何在一张纸上实现多栏打印?(200分)

  • 主题发起人 主题发起人 gcys
  • 开始时间 开始时间
G

gcys

Unregistered / Unconfirmed
GUEST, unregistred user!
各位大虾:
小弟为公司做了一客户管理程序,现要在一张A4的纸上打印客户内容,要求如下:在纸上打印9个客户信息,像名片一样:

名称:省办公厅 名称:国税局 名称:省环报局
地址:一环路5号 地址:一环路2号 地址:三环路2号

名称:顺达公司 名称:佳腾公司 名称:日昌公司
地址:一环路5号 地址:一环路2号 地址:三环路2号

名称:康赛公司 名称:赛特公司 名称:APC公司
地址:一环路5号 地址:一环路2号 地址:三环路2号


请各位大师帮帮忙,谢谢。
 
在DetailBand中放6个QRLabel,如下:
[name1 ] [name2 ] [name3 ]
[addr1 ] [addr2 ] [addr3 ]
在BeforePrint事件中执行:
procedure TForm2.QRBand2BeforePrint(Sender: TQRCustomBand;
var PrintBand: Boolean);
var
i:integer;
s:string;
L1,L2:TComponent;
begin

i:=1;
while i<=3do

begin

s:='name'+IntToStr(i);
L1:=FindComponent(s);
s:='addr'+IntToStr(i);
L2:=FindComponent(s);
if MyTable.Eof then

begin

(L1 as TQRLabel).Caption:=' ';
(L2 as TQRLabel).Caption:=' ';
end else
begin

(L1 as TQRLabel).Caption:=MyTable.FieldByName('名称').Asstring;
(L2 as TQRLabel).Caption:=MyTable.FieldByName('地址').Asstring;
MyTable.Next;
end;

i:=i+1;
end;

end;


如每页只需输出3行,可控制输出行数,参见已答问题。
 
纠正一个错误!
(L1 as TQRLabel).Caption:=MyTable.FieldByName('名称').Asstring;
(L2 as TQRLabel).Caption:=MyTable.FieldByName('地址').Asstring;
if i<>3 then
MyTable.Next;
////
 
感谢二位大虾。
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部