使用Expressprinting打印DbGridEh

 在多年的程序开发中一直使用dbgridEh这个轻量级的表格组件,但对它本身所提供的打印功能却不太满意,这之前程序中的报表打印一直在用Fastreport。
     近来一个新的程序中,客户要求对表格的内容进行直接打印(即所见所得)。本来想直接修改dbgrideh中的打印代码,以满足要求,但看过一遍代码之后就放弃这想法了:dbgrideh的打印代码实在不敢恭维,如果实在要修改,后期的维护工作不敢保证。虽然Fastreport也能动态打印dbgrideh,但毕竟也是用程序生成模板,灵活性有所欠缺。后来想到了Devexpress中的Expressprinting组件,这是一个很专业的打印组件,只是它本身没有提供dbgrideh的link,之前也不知如何写新的link,也就没有使用过。
     Expressprinting本身提供了stringGrid的link,stringgrid继承自Tcustomgrid,而Dbgrideh也是继承自TcustomGrid,如果要为dbgrideh写一个link,与stringgrid的link应该有异曲同工之处。打开TStddxGridReportLink的代码,果不然,它的父类TCustomdxGridReportLink就是专门针对TcustomGrid的打印而写的。阅读TCustomdxGridReportLink的代码,发现它是针对像StringGrid这样的静态表格而写的,而DbgridEh是基于dataset的动态表格,在处理上还是稍有不同。TCustomdxGridReportLink的上级是TAbstractdxGridReportLink,从名称可以就可以知道这是专门为表格而写的一个link(devexpress 的spreadsheet的打印link也是基于TAbstractdxGridReportLink)。于是决定DbgridEh也继承自TAbstractdxGridReportLink,要继承的方法:

    function GetColCount: Integer; override;
    function GetFixedColCount: Integer; override;
    function GetFixedRowCount: Integer; override;
    function GetRowCount: Integer; override;
    function GetCellFont(ACol, ARow: Integer): TFont;override;
    function GetCellText(ACol, ARow: Integer): string; override;
   
    function GetSourceColWidth(ACol: Integer): Integer; override;
    function GetSourceRowHeight(ARow: Integer): Integer; override;

    function IsDrawBorder: Boolean; override;
    function IsDrawFixedHorzLines: Boolean; override;
    function IsDrawFixedVertLines: Boolean; override;
    function IsDrawHorzLines: Boolean; override;
    function IsDrawVertLines: Boolean; override;
    procedure ConstructReport(AReportCells: TdxReportCells); override;

public
    property DBGrid: TDBGridEH read GetDBGrid;//需要打印的DBGrideh组件

     GetCellText是取单元格内容的过程,TCustomdxGridReportLink是通过col,row坐标值来取某一单元格内容,在Dbgrideh是没办法这样取某一行、某一字段的值,经过查阅delphi的帮助,Dataset的RecNO是可以用row来定位的,GetCellText的实现如下:
function TDbGridEhReportLink.GetCellText(ACol, ARow: Integer): string;
begin
   if IsFixedCell(ACol, ARow) then
   begin
       result:=DBGrid.Columns[ACol].Title.Caption;
   end else
   begin
         DBGrid.DataSource.DataSet.RecNo:=ARow;
         Result:=DBGrid.DataSource.DataSet.fieldbyname(DBGrid.Columns[ACol].FieldName).AsString;
   end;
end;
GetRowCount是取表格所有的行,相对于DbGrideh而言,应该是记录集的Recordcount,再加上标题行,实现如下:
function TDbGridEhReportLink.GetRowCount: Integer;
begin
     Result:=DBGrid.DataSource.DataSet.RecordCount+1;
end;

GetFixedRowCount是取表格的固定行数,Dbgrideh的固定行,就是标题行了:
function TDbGridEhReportLink.GetFixedRowCount: Integer;
begin
    Result:=1;
end;

ConstructReport是Expressprintint组件一个很重要的过程,从字面就应该知道它的作用了。具体怎么构造一个表格的打印,TAbstractdxGridReportLink已经帮我们实现了,我们只需在ConstructReport过程中写下面这几行代码,Dbgrideh的打印程序就算完成了。

if DBGrid=nil then Exit;
try
      Font:=DBGrid.Font;
      FixedFont:=DBGrid.TitleFont;
      DBGrid.DataSource.DataSet.DisableControls;
     inherited;
finally
     DBGrid.DataSource.DataSet.EnableControls;
end
   
      用Expressprinting来打印DBGridEh,相对于修改Dbgrideh本身的打印代码,从工作量上来看,是够省事了吧?而且,从扩展性上来看,Expressprinting更强得多。

软件简称: MEP快递单打印软件 软件全称: Micronet Express Print 快递单打印软件 系统要求:Windows Server 2003/2008 + IIS6.0以上/IIS7.0 / .NET 2.0 数据库要求:MS SQL2005/2008 开发语言: C# .Net framework 2.0 一、MEP快递单打印软件 简介: 可自行设计各种快递单格式批量打印的软件。 可以管理海量订单的打印,可以自主设计所有国内快递公司快递单的打印格式,同时集成同步到Micronet四网合一的订单系统中批量打印快递单,是成熟电商的必备武器。 二、MEP功能简介 成熟电商企业海量快递单打印系统是什么? 1、成熟电商企业快递单优秀打印方案。 方便电商企业将海量订单批量打印 快速对接商城系统高效抓取订单打印 灵活可自定义的快递单模板设计 即时升级最新的快递单打印模板 2、灵活自行设计无数种快递单模板。 用户可以自行设计全球主流的快递单打印模板,并且可以在线升级海量的模板方便批量打印。 3、自动获取商城所有订单。 可以自动获取商城上所有订单批量打印。 若是没有同步商城,也可以单机设计打印。 与商城系统的无缝对接将解决日订单超过上千打印的烦恼。 4、用户登录。 用户可以自行管理。 安全高效的打印效果。 Micronet Express Print Setup 安装操作说明: 1、双击“MicronetExpress.exe”,会自动解压到“MicronetExpress”目录,解压后有三个文件 setup.exe MicronetExpress.msi 安装操作说明.txt 2、安装程序,需要 .NetFramework 2.0支持,因为有检测系统自动更新的链接订单系统API,启动时稍微慢一些。 3、默认操作员用户是: 01 ,密码是: 1 4、本软件基本功能如下: A、自定义设计快递单模板(申通、顺风、圆通等)。 B、导入Micronet ShopBest商城中订单系统的订单进行批量打印(如果您是Micronet ShopBest用户并且开通API权限,才可以使用)。 【API测试:http://www.shopbest.net.cn/Web_Service/OrderService.asmx 用户名:Micronet 密码:向微网工作人员索取】 C、单机打印。 联系电话:0754-88580015 / 6 / 7 / 8 / 9 网址:http://www.Micronet.cn 三、官方下载地址: http://www.micronet.com.cn/file/MicronetExpress.exe
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值