本站首页    管理页面    写新日志    退出


«December 2025»
123456
78910111213
14151617181920
21222324252627
28293031


公告
================

注会练习软件
http://www.cpasoft.com.cn
我的注会软件官网

http://blog.163.com/abc7105@126/

 

 


哈哈,热爱快“过气”的DELPHI


我的分类(专题)

日志更新

最新评论

留言板

链接

Blog信息
blog名称:注册会计师(注会)练习软件
日志总数:398
评论数量:116
留言数量:27
访问次数:3284633
建立时间:2005年6月6日




今天将一段c#的datagrid打印类"翻译"成了delphi for net ,并支持eco
软件技术

吕向阳 发表于 2006/5/7 20:30:11

[borland eco delphi datagrid 打印 ] 想以后省点事,今天花点力,做了一回二道贩子,将一个c#代码变了过来.不过,还没有网格线. unit printdatagird; interface   uses System.Collections,  system.windows.Forms   ,   System.Drawing,System.Drawing.Printing,System.Data  , System.ComponentModel ,    Borland.Eco.Windows.Forms, Borland.Eco.WinForm, Borland.Eco.Handles     ;   type   DataGridPrinter= class  private    { Private Declarations }    datagrid:datagrid; PrintDocument1: printDocument; PageSetupDialog: pageSetupDialog; PrintPreviewDialog:printPreviewDialog; procedure printDocument_PrintPage( sender:system.object;e:System.Drawing.Printing.PrintPageEventArgs ); function  GetPrintDocument():PrintDocument;  public    constructor Create(datagrid:datagrid) ;    procedure print();  end; implementation  ///--------------- procedure DataGridPrinter.printDocument_PrintPage(sender: TObject;  e: System.Drawing.Printing.PrintPageEventArgs);var   i,j, rowCount, colCount, x ,y , rowGap, colGap , leftMargin:integer;   font:system.drawing.font;   headingFont:system.drawing.font;   captionFont:system.drawing.font ;   Brush:system.drawing.brush ;   s,f3, cellValue:string; //  aa:datagrid.tablestyles; begin   rowCount := 0;   colCount := 0;   x := 0;   y := 0;   rowGap := 30;   colGap := 5;   leftMargin := 50;   font := system.drawing.Font.create('Arial', 10);   headingFont :=system.drawing.Font.create('Arial', 11, FontStyle.Underline);   captionFont := system.drawing.Font.create('Arial', 10, FontStyle.Bold);   brush :=SolidBrush.create(Color.Black);   cellValue := '';    if(dataGrid.DataSource.GetType().ToString() = 'System.Data.DataTable')  then   begin    rowCount := DataTable(dataGrid.DataSource).Rows.Count;   end   else   if(dataGrid.DataSource.GetType().ToString() = 'System.Collections.ArrayList') then   begin     rowCount := ArrayList(dataGrid.DataSource).Count;   end   else   begin     try       rowcount:=expressionhandle(datagrid.DataSource).Element.GetAsCollection.Count;     except       messagebox.show('数据源有错误!');         exit;     end;   end;    colCount := dataGrid.TableStyles[0].GridColumnStyles.Count;    //print caption   if(dataGrid.CaptionVisible)  then   begin     y := y+rowGap;     x := leftMargin;     e.Graphics.DrawString(dataGrid.CaptionText, captionFont, brush, x, y);   end;    //print headings   y :=y+ rowGap;   x := leftMargin;   for j := 0  to colCount-1 do begin     if(dataGrid.TableStyles[0].GridColumnStyles[j].Width > 0)  then begin         cellValue := dataGrid.TableStyles[0].GridColumnStyles[j].HeaderText;         e.Graphics.DrawString(cellValue, headingFont, brush, x, y);         x:=x+dataGrid.TableStyles[0].GridColumnStyles[j].Width + colGap;      end;   end;    //print all rows   for i:= 0 to  rowCount-1 do begin       y:=y+ rowGap;       x := leftMargin;       for j := 0 to  colCount-1 do begin         if(dataGrid.TableStyles[0].GridColumnStyles[j].Width > 0) then         begin            cellValue := dataGrid[i,j].ToString();            e.Graphics.DrawString(cellValue, font, brush, x, y);            x:=x+ dataGrid.TableStyles[0].GridColumnStyles[j].Width + colGap; //           y := y + rowGap            //            * (cellValue.Split({'\r', '\n'}).Length - 1);         end;      end;   end;    s:= cellValue;   f3:= cellValue;end; function  DataGridPrinter.GetPrintDocument():PrintDocument;begin  result:= printDocument1;end; procedure DataGridPrinter.Print();var  pageSetupDialog: System.Windows.Forms.PageSetupDialog;  printPreviewDialog:System.Windows.Forms.PrintPreviewDialog;begin//trypageSetupDialog :=  System.Windows.Forms.PageSetupDialog.create();pageSetupDialog.Document := printDocument1;pageSetupDialog.ShowDialog();printPreviewDialog :=System.Windows.Forms.PrintPreviewDialog.create;printPreviewDialog.Document := printDocument1;printPreviewDialog.Height := 600;printPreviewDialog.Width := 800;printPreviewDialog.ShowDialog();end; ///--------------- constructor DataGridPrinter.Create(datagrid:datagrid);begin  inherited Create;  // TODO: Add any constructor code here  self.dataGrid := dataGrid;  printDocument1 :=system.drawing.Printing.PrintDocument.create();  include(printDocument1.PrintPage,printDocument_PrintPage);end; end; 这些代码运行要求datagrid必须人工定义tablestyle中的每一列.


阅读全文(1790) | 回复(0) | 编辑 | 精华
 



发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.047 second(s), page refreshed 144799353 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号