有办法打印dbgrid中的记录数据吗?

ming1 2000-09-07 02:17:00
有办法打印dbgrid中的记录数据吗?各位高手请指教!
...全文
208 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Cowboy22 2000-09-23
  • 打赏
  • 举报
回复
我有TDBGridEh , DBSumLst ,PrnDGDlg三把斧!
nononono 2000-09-23
  • 打赏
  • 举报
回复
哪里有 tdbgrideh? 谢谢

emial: xd_fang@263.net
lzzqqq 2000-09-22
  • 打赏
  • 举报
回复
我在做上个项目时遇到过类似的问题,结果是用DbgridEh控件代替Dbgrid,
DbgridEh控件是加强控件,自带有打印预览功能,并可通过各种属性指定
如表头等信息,在DbgridEh中显示的数据通过调用其打印印预览功能方法
可直接得到印预览并输出,很好用,我回头查一下上次项目的资料再回答你!!
E-Mail:lzzqqq@sohu.com
zcw 2000-09-14
  • 打赏
  • 举报
回复
用报表控件
benzz 2000-09-14
  • 打赏
  • 举报
回复
http://www.chinaprogrammer.com/softshow/program/index.asp(报表)
有打印dbgrid的例子
alin 2000-09-07
  • 打赏
  • 举报
回复
Var
ratio:Real;

procedure PrintColLine(Const ItemList:TStringList;Const X,Y:Integer);
Var
PointLeft :Integer;
Count :Integer;
Begin
PointLeft :=X;
for Count :=0 to ItemList.Count -1 do
Begin
Printer.Canvas.TextOut(Round(PointLeft * ratio),Round(Y * ratio),
ItemList.Strings[Count]);
PointLeft :=PointLeft+Integer(ItemList.Objects[Count]);
End;
End;

procedure PrintDBGridTitle(Const SourceDBGrid:TDBGrid);
Begin
End;

procedure PrintDBGridItem(const SourceDBGrid:TDBGrid;Const X,Y:Integer);
Begin
End;

function PrintDBGrid(Const SourceDBGrid:TDBGrid;Const IsVertical: Boolean):Boolean;
var
OrigPPI: Integer;
CountRow :Integer;
ItemList :TStringList;
PointX,PointY :Integer;
begin

Result :=False;

ratio := 14; //打印纸与DBGRID比例
//Printer.PageWidth / SourceDBGrid.Width;
OrigPPI := Printer.Canvas.Font.PixelsPerInch;
Printer.Canvas.Font.PixelsPerInch := Round(Printer.Canvas.Font.PixelsPerInch * ratio);
if IsVertical then //横竖打印
Printer.Orientation := poPortrait
else
Printer.Orientation := poLandScape;

printer.begindoc;
ItemList :=TStringList.Create;
Try

SourceDBGrid.DataSource.DataSet..First;
PointX :=90;
PointY :=0;

PrintDBGridTitle(SourceDBGrid);
PointY :=PointY +15;
Printer.Canvas.Font.Assign(SourceDBGrid.Font);
for CountRow :=0 to SourceDBGrid.DataSource.DataSet.RecordCount -1 do
Begin
ItemList.Clear;
PointX :=7;
PointY :=PointY+4;
//打印两个字段内容,如通用,则直接取SourceDBGrid显示的所有字段,取SourceDBGrid显示的所有字段知道怎 样取吧
ItemList.AddObject(SourceDBGrid.DataSource.DataSet.FieldByName('CUST_ID').AsString, TObject(13));
ItemList.AddObject(SourceDBGrid.DataSource.DataSet.FieldByName('DESTINATION').AsString, TObject(23)) ;
PrintColLine(ItemList,PointX,PointY);
SourceDBGrid.DataSource.DataSet.Next;
End;
finally
ItemList.Free;
Printer.EndDoc;

Printer.Canvas.Font.PixelsPerInch := OrigPPI;
Result:=True;
End;
end;

jnww 2000-09-07
  • 打赏
  • 举报
回复
做个报表,将报表的DATASET指向DBGRID的DATASET;或将DBGRID所在的FORM直接发送到打印机上去打印!

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧