有办法打印dbgrid中的记录数据吗? 做个报表,将报表的DATASET指向DBGRID的DATASET;或将DBGRID所在的FORM直接发送到打印机上去打印! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 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);BeginEnd;procedure PrintDBGridItem(const SourceDBGrid:TDBGrid;Const X,Y:Integer);BeginEnd;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; http://www.chinaprogrammer.com/softshow/program/index.asp(报表)有打印dbgrid的例子 我在做上个项目时遇到过类似的问题,结果是用DbgridEh控件代替Dbgrid,DbgridEh控件是加强控件,自带有打印预览功能,并可通过各种属性指定如表头等信息,在DbgridEh中显示的数据通过调用其打印印预览功能方法可直接得到印预览并输出,很好用,我回头查一下上次项目的资料再回答你!!E-Mail:[email protected] 哪里有 tdbgrideh? 谢谢emial: [email protected] 我有TDBGridEh , DBSumLst ,PrnDGDlg三把斧! 请教 我有一个MySQL数据库,怎么实现 帐号注册 + 登陆 的功能? 我用Ehlib4.14,出现这样子错误?高手指点一下。 请高手推荐一本好的delphi学习书籍 一个小问题,请帮忙,谢谢! 求时间加减函数,如果2004-5-8 10:10:10 15小时前怎么得到2004-5-9 2:10:10? to----ljmanage delphi能制作帮助文件吗? 请问简单的问题(关于按键键值问题)? ■■CoolSlob自编函数“小”放送,敬请关注■■ 怎样在程序运行中获得精确的时间? 关于DBGrid的数据录入问题(MSSQL)(及格分给您老) 请教:关于数据库 !!!
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;
有打印dbgrid的例子
DbgridEh控件是加强控件,自带有打印预览功能,并可通过各种属性指定
如表头等信息,在DbgridEh中显示的数据通过调用其打印印预览功能方法
可直接得到印预览并输出,很好用,我回头查一下上次项目的资料再回答你!!
E-Mail:[email protected]