做个报表,将报表的DATASET指向DBGRID的DATASET;或将DBGRID所在的FORM直接发送到打印机上去打印!
解决方案 »
- 在使用rmreport控件时,如何控制走纸
- 我用delphi自带的打包程序打包好以好,在xp下运行,为什么安装好以好,系统老是发送错误报告,我昨天还用的好好的,今天就不能用了。
- 怎么把一个SQL数据库的结构,复制为另一个SQL文件
- 用QuickReport作条列式报表,为什么只显示一条记录?
- 有没有办法 从中文字符串生成拼音字母的字串? 好老师我会另开贴给分
- 有关TChart 组件的一个问题,请帮忙解决!!!
- 菜鸟问题,请各位高手指点一二吧!
- 怎样让进程杀不掉?
- 关于dbgrid的问题
- 怎样判断系统是否是Windows XP?
- 关于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]