|
|
|
DBGrid使用全书(二) |
热 ★★★★ |
|
DBGrid使用全书(二) |
|
作者:闵涛 文章来源:闵涛的学习笔记 点击数:576 更新时间:2009/4/23 18:29:01 |
|
打印 TDBGrid内容----方法1 procedure PrintDbGrid(DataSet:TDataSet;DbGrid:TDbGrid;Title:String); var PointX,PointY:integer; ScreenX:integer; i,lx,ly:integer; px1,py1,px2,py2:integer; RowPerPage,RowPrinted:integer; ScaleX:Real; THeight:integer; TitleWidth:integer; SumWidth:integer; PageCount:integer; SpaceX,SpaceY:integer; RowCount:integer; begin PointX:=Round(GetDeviceCaps(printer.Handle,LOGPIXELSX)/2.54); PointY:=Round(GetDeviceCaps(printer.Handle,LOGPIXELSY)/2.54); ScreenX:=Round(Screen.PixelsPerInch/2.54); ScaleX:=PointX/ScreenX; RowPrinted:=0; SumWidth:=0; printer.BeginDoc; With Printer.Canvas do begin DataSet.DisableControls; DataSet.First ; THeight:=Round(TextHeight(''''我'''')*1.5);//设定每行高度为字符高的1.5倍 SpaceY:= Round(TextHeight(''''我'''')/4); SpaceX:=Round(TextWidth(''''我'''')/4); RowPerpage:=Round((printer.PageHeight-5*PointY)/THeight); //上下边缘各2厘米 ly:=2*PointY; PageCount:=0; while not DataSet.Eof do begin if (RowPrinted=RowPerPage) or (RowPrinted=0) then begin if RowPrinted<>0 then Printer.NewPage; RowPrinted:=0; PageCount:=PageCount+1; Font.Name:=''''宋体''''; Font.size:=16; Font.Style:=Font.Style+[fsBold]; lx:=Round((Printer.PageWidth-TextWidth(Title))/2); ly:=2*PointY; TextOut(lx,ly,Title); Font.Size:=11; Font.Style:=Font.Style-[fsBold]; lx:=Printer.PageWidth-5*PointX; ly:=Round(2*PointY+0.2*PointY); if RowPerPage*PageCount>DataSet.RecordCount then RowCount:=DataSet.RecordCount else RowCount:=RowPerPage*PageCount; TextOut(lx,ly,''''第''''+IntToStr(RowPerPage*(PageCount-1)+1)+''''-''''+IntToStr(RowCount)+''''条,共''''+IntToStr(DataSet.RecordCount)+''''条''''); lx:=2*PointX; ly:=ly+THeight*2; py1:=ly-SpaceY; if RowCount=DataSet.RecordCount then py2:=py1+THeight*(RowCount-RowPerPage*(PageCount-1)+1) else py2:=py1+THeight*(RowPerPage+1); SumWidth:=lx; for i:=0 to DBGrid.Columns.Count-1 do begin px1:=SumWidth-SpaceX; px2:=SumWidth; MoveTo(px1,py1); LineTo(px2,py2); TitleWidth:=TextWidth(DBGrid.Columns[i].Title.Caption); lx:=Round(SumWidth+(DBGrid.Columns[i].width*scaleX-titleWidth)/2); TextOut(lx,ly,DBGrid.Columns[i].Title.Caption); SumWidth:=Round(SumWidth+DBGrid.Columns[i].width*scaleX)+SpaceX*2; end; px1:=SumWidth; //画最后一条竖线 px2:=SumWidth; MoveTo(px1,py1); LineTo(px2,py2); px1:=2*PointX; //画第一条横线 px2:=SumWidth; py1:=ly-SpaceY; py2:=ly-SpaceY; MoveTo(px1,py1); LineTo(px2,py2); py1:=py1+THeight; py2:=py2+THeight; MoveTo(px1,py1); LineTo(px2,py2); end; lx:=2*PointX; ly:=ly+THeight; px1:=lx; px2:=SumWidth; py1:=ly-SpaceY+THeight; py2:=ly-SpaceY+THeight; MoveTo(px1,py1); LineTo(px2,py2); for i:=0 to DBGrid.Columns.Count-1 do begin TextOut(lx,ly,DataSet.FieldByname(DBGrid.Columns[i].Fieldname).AsString); lx:=Round(lx+DBGrid.Columns[i].width*ScaleX+SpaceX*2); end; RowPrinted:=RowPrinted+1; DataSet.next; end; DataSet.first; DataSet.EnableControls; end; printer.EndDoc; end;
没有相关教程
|
|
教程录入:mintao 责任编辑:mintao |
|
|
上一篇教程: DELPHI开发技巧 下一篇教程: DBGrid使用全书(三) |
|
|
【字体:小 大】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 |
|
注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网] |
网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!) |
|
|
|
|
|
|
|
同类栏目 |
|
|
赞助链接 |
|
|
500 - 内部服务器错误。
|
|
|
|
|
|