在 cxgrid 里的 cxgridpopopmenu 里加入导出功能。

本文介绍如何为cxGrid组件添加展开/折叠所有分组、导出数据及打印等功能。通过自定义菜单项,实现了数据导出到Excel、XML、文本及HTML格式,并提供了打印表格的菜单选项(未实现)。此外,还定义了相应的资源字符串。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

因为使用这个工具很方便,但这个菜单里没有导出选项,觉得是一。。。
于是,加上之。

在cxGridHeaderPopupMenuItems.pas中。第199行开始,加入如下内容,定义菜单项

 1 ExpandedBlockStart.gif ContractedBlock.gif /**/ /////
 2 None.gif   TcxGridExpandAllGroup  =   class (TcxGridHeaderPopupMenuOperation)
 3 None.gif   protected
 4 None.gif    procedure Execute(Sender: TObject);  override ;
 5 None.gif    function GetEnabled: Boolean;  override ;
 6 None.gif    function GetImageResourceName:  string override ;
 7 None.gif   public
 8 None.gif    constructor Create;  override ;
 9 None.gif  end;
10 None.gif
11 None.gif   TcxGridCollapseAllGroup  =   class (TcxGridHeaderPopupMenuOperation)
12 None.gif   protected
13 None.gif    procedure Execute(Sender: TObject);  override ;
14 None.gif    function GetEnabled: Boolean;  override ;
15 None.gif   public
16 None.gif    constructor Create;  override ;
17 None.gif  end;
18 None.gif
19 None.gif  TcxGridExport  =   class (TcxGridHeaderPopupMenuOperation)
20 None.gif   protected
21 None.gif    procedure Execute(Sender: TObject);  override ;
22 None.gif    function GetImageResourceName:  string override ;
23 None.gif   public
24 None.gif    constructor Create;  override ;
25 None.gif  end;
26 None.gif
27 None.gif  TcxGridPrint  =   class (TcxGridHeaderPopupMenuOperation)
28 None.gif   protected
29 None.gif    procedure Execute(Sender: TObject);  override ;
30 None.gif   public
31 None.gif    constructor Create;  override ;
32 None.gif  end;
33 None.gif
34 ExpandedBlockStart.gifContractedBlock.gif /**/ //
35 None.gif
36 None.gif


在 procedure TcxGridHeaderPopupMenuOperations.AddItems; 过程中,加入新的菜单项

None.gif procedure TcxGridHeaderPopupMenuOperations.AddItems;
None.gifbegin
None.gif  AddItem(TcxGridSortColumnAsc);
None.gif   dot.gif.
None.gif  AddItem(TcxGridBestFitAllColumns).BeginGroup :
=  True;
None.gif  AddItem(TcxGridExpandAllGroup).BeginGroup:
= true ;
None.gif  AddItem(TcxGridCollapseAllGroup);
None.gif  AddItem(TcxGridExport);
None.gif  AddItem(TcxGridPrint);
None.gifend;
None.gif


 

接下来是实现:

ExpandedBlockStart.gif ContractedBlock.gif /**/ ////
InBlock.gif
///
InBlock.gif
///
ExpandedBlockEnd.gif
///

ExpandedBlockStart.gif ContractedBlock.gif dot.gif {TcxGridExpandAllGroup}
None.gifprocedure TcxGridExpandAllGroup.Execute(Sender: TObject);
None.gifbegin
None.gif  HitGridView.DataController.Groups.FullExpand;
None.gifend;
None.gif
None.giffunction TcxGridExpandAllGroup.GetEnabled;
None.gifbegin
None.gif  Result:
=  Boolean (HitGridView.DataController.GridView.GroupedItemCount );
None.gifend;
None.gif
None.gifconstructor TcxGridExpandAllGroup.Create;
None.gifbegin
None.gif  inherited;
None.gif  ResCaption :
=  @cxSGridExpandAllGroup;
None.gifend;
None.gif
None.giffunction TcxGridExpandAllGroup.GetImageResourceName;
None.gifbegin
None.gif  Result :
=  AImageName  +   ' 21 ' ;
None.gifend;
None.gif
None.gif
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {TcxGridCollapseAllGroup}
None.gifprocedure TcxGridCollapseAllGroup.Execute(Sender: TObject);
None.gifbegin
None.gif  HitGridView.DataController.Groups.FullCollapse;
None.gifend;
None.gif
None.giffunction TcxGridCollapseAllGroup.GetEnabled;
None.gifbegin
None.gif  Result:
=  Boolean (HitGridView.DataController.GridView.GroupedItemCount );
None.gifend;
None.gif
None.gifconstructor TcxGridCollapseAllGroup.Create;
None.gifbegin
None.gif  inherited
None.gif  ResCaption :
=  @cxSGridCollapseAllGroup;
None.gif  self.ImageIndex:
= 99 ;
None.gifend;
None.gif
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {TcxGridExport}
None.gifprocedure TcxGridExport.Execute(Sender: TObject);
None.gifvar
None.gif  SFD:TSaveDialog;
None.gif  FileName,FileExt:String;
None.gifbegin
None.gif  SFD:
= TSaveDialog.Create(nil);
None.gif  SFD.Filter:
= ' Excel文件 (*.xls)|*.xls|XML文件 (*.xml)|*.xml|文本文件 (*.txt)|*.txt|网页文件 (*.html)|*.html ' ;
None.gif  SFD.Title:
= ' 导出为 ' ;
None.gif  SFD.DefaultExt:
= ' .XLS ' ;
None.gif  SFD.Options:
= [ofOverwritePrompt, ofEnableSizing];
None.gif
None.gif  
if  not SFD.Execute then exit;
None.gif  FileName:
= SFD.FileName;
None.gif  FileExt:
= UpperCase(ExtractFileExt(FileName));
None.gif
None.gif  
if  FileExt = ' .XLS '  then
None.gif    ExportGridToExcel(FileName,Self.GridPopupMenu.Grid)
None.gif    
else   if  FileExt = ' .XML '  then
None.gif         ExportGridToXML(FileName,self.GridPopupMenu.Grid)
None.gif         
else   if  FileExt = ' .TXT '  then
None.gif              ExportGridToText(FileName,Self.GridPopupMenu.Grid)
None.gif              
else   if  FileExt = ' .HTML '  then
None.gif                   ExportGridToHTML(FileName,Self.GridPopupMenu.Grid)
None.gif                   
else
None.gif                   begin
None.gif                      Application.MessageBox(
' 不支持的导出格式 ' ' xx ' );
None.gif                      Exit;
None.gif                   end;
None.gif   SFD.Free;                
None.gifend;
None.gif
None.gifconstructor TcxGridExport.Create;
None.gifbegin
None.gif  inherited Create;
None.gif  ResCaption :
=  @cxSGridExport;
None.gifend;
None.gif
None.giffunction TcxGridExport.GetImageResourceName;
None.gifbegin
None.gif  Result :
=  AImageName  +   ' 23 ' ;
None.gifend;
None.gif
None.gif
None.gifprocedure TcxGridPrint.Execute(Sender: TObject);
None.gifbegin
None.gif
//  todo:Addcode
None.gif
end;
None.gif
None.gifconstructor TcxGridPrint.Create;
None.gifbegin
None.gif  inherited
None.gif  ResCaption:
= @cxSGridPrint;
None.gif  Self.ImageIndex:
= 99 ;
None.gifend;

 

最后还要在cxGridPopupMenuConsts.pas中定义资源

None.gif  cxSGridExpandAllGroup  =   ' 展开全部分组 ' ;
None.gif  cxSGridCollapseAllGroup 
=   ' 收起所有分组 ' ;
None.gif  cxSGridExport 
=   ' 导出所有数据 ' ;
None.gif  cxSGridPrint 
=   ' 打印表格 ' ;


还有一点要声明一下,打印表格的代码没有实现,嘿嘿。

转载于:https://www.cnblogs.com/qufo/archive/2007/08/06/844979.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值