怎样实现隔行打印(打印用户选择的不同的DBGrid行) ( 积分: 100 )

  • 主题发起人 主题发起人 chenpeng9581
  • 开始时间 开始时间
C

chenpeng9581

Unregistered / Unconfirmed
GUEST, unregistred user!
如数据如下显示
姓名 性别 年龄
张三 男 20
李四 男 22
王五 女 23
用户可选择任意其中两条打印出报表,该怎么作了?
 
如数据如下显示
姓名 性别 年龄
张三 男 20
李四 男 22
王五 女 23
用户可选择任意其中两条打印出报表,该怎么作了?
 
自己手工去实现就不是很复杂,在打印机的Canvas上操作,如果不需要打印的就打印空格好了.
 
打印机的Canvas上操作,这个没作过
我想这样作,在当前的DBGrid中点击其中一条记录,触发一个按钮后将这条记录保存到另外一个DataSet中,支持Ctrl和Shift连选(这个要怎样作了?)
 
DBGridEh,QuantumGrid等可以在单元格加CheckBox,让用户把需要打印的勾上就可以了。
 
双击所选纪录,把所选的纪录生成新的临时表,打印临时表。
 
可不可以用Ctrl或Shift键一次选取多条记录然后再保存到临时表,那位高手帮帮忙呀,
小弟急用!!!
 
首先设置 DBGrid1 Options属性中的 dgMultiSelect 为True;这样就可以多选了.
假设 ID 为表的主键吧
procedure TForm1.Button2Click(Sender: TObject);
var
iLoop: Integer;
sBH: string;
begin
sBH := '(';
for iLoop := 0 to DbGrid1.SelectedRows.Count - 1do
begin
AdoQuery1.GotoBookmark(pointer(DbGrid1.SelectedRows[iLoop]));
if iLoop <> Dbgrid1.SelectedRows.Count - 1 then
sBH := sBH + ' ID= ' + IntToStr(adoquery1['ID']) + ' or '
else
sBH := sBH + ' ID= ' + IntToStr(adoquery1['ID']);
end;
sBH := sBH + ')';
with AdoQuery2do
begin
close;
SQL.Text := 'select * from 表 where ' + sBH;
open;
end;
//以下可以利用AdoQuery2做打印了
end;
 
多人接受答案了。
 

Similar threads

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