procedure TForm1.Button1Click(Sender: TObject); const XSpace=50; YSpace=80; var x,y,i : integer; begin adoquery1.First; y:=100; printer.BeginDoc ; with adoquery1 do begin x:=0; for i:=0 to adoquery1.FieldCount-1 do begin printer.Canvas.TextOut(x,y,fields[i].DisplayName); x:=printer.Canvas.PenPos.x+xspace; end; y:=printer.Canvas.PenPos.y + YSpace; printer.Canvas.MoveTo(0,y); printer.Canvas.LineTo(x,y); y:=printer.Canvas.PenPos.y+YSpace; while not recordset.eof do begin x:=0 ; for i:=0 to fieldcount-1 do begin printer.Canvas.TextOut(x,y,adoquery1.fields[i].DisplayText); x:=printer.Canvas.PenPos.x+xSpace; end; next ; //记录下移一条 y:=printer.Canvas.PenPos.y+ySpace; end; end; printer.Canvas.MoveTo (0,y); printer.Canvas.LineTo(x,y); printer.EndDoc ; end;
XSpace=50;
YSpace=80;
var
x,y,i : integer;
begin
adoquery1.First;
y:=100;
printer.BeginDoc ;
with adoquery1 do
begin
x:=0;
for i:=0 to adoquery1.FieldCount-1 do
begin
printer.Canvas.TextOut(x,y,fields[i].DisplayName);
x:=printer.Canvas.PenPos.x+xspace;
end;
y:=printer.Canvas.PenPos.y + YSpace;
printer.Canvas.MoveTo(0,y);
printer.Canvas.LineTo(x,y);
y:=printer.Canvas.PenPos.y+YSpace;
while not recordset.eof do
begin
x:=0 ;
for i:=0 to fieldcount-1 do
begin
printer.Canvas.TextOut(x,y,adoquery1.fields[i].DisplayText);
x:=printer.Canvas.PenPos.x+xSpace;
end;
next ; //记录下移一条
y:=printer.Canvas.PenPos.y+ySpace;
end;
end;
printer.Canvas.MoveTo (0,y);
printer.Canvas.LineTo(x,y);
printer.EndDoc ;
end;
而你说得dbgrid实际上是关联到某一个数据集的DBGrid.DataSource.DataSet,这样你就可以完成报表的打印了
都做一个报表等待调用呢,希望高手们不要避重就轻呀
----------------------------
你喜欢delphi吗?让我们一起交流吧;
www.nxrs.net/bbs
别扔砖啊,特别是斑竹;
声明:只要可以交流,那儿都行,我还是认为csdn是最好的;