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

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

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

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


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

procedure TcxGridHeaderPopupMenuOperations.AddItems;
begin
  AddItem(TcxGridSortColumnAsc);
   .
  AddItem(TcxGridBestFitAllColumns).BeginGroup :
=  True;
  AddItem(TcxGridExpandAllGroup).BeginGroup:
= true ;
  AddItem(TcxGridCollapseAllGroup);
  AddItem(TcxGridExport);
  AddItem(TcxGridPrint);
end;


 

接下来是实现:

////////////////////////////////////////////////////////////////////////////////
///
///
///

{TcxGridExpandAllGroup}
procedure TcxGridExpandAllGroup.Execute(Sender: TObject);
begin
  HitGridView.DataController.Groups.FullExpand;
end;

function TcxGridExpandAllGroup.GetEnabled;
begin
  Result:
=  Boolean (HitGridView.DataController.GridView.GroupedItemCount );
end;

constructor TcxGridExpandAllGroup.Create;
begin
  inherited;
  ResCaption :
=  @cxSGridExpandAllGroup;
end;

function TcxGridExpandAllGroup.GetImageResourceName;
begin
  Result :
=  AImageName  +   ' 21 ' ;
end;


{TcxGridCollapseAllGroup}
procedure TcxGridCollapseAllGroup.Execute(Sender: TObject);
begin
  HitGridView.DataController.Groups.FullCollapse;
end;

function TcxGridCollapseAllGroup.GetEnabled;
begin
  Result:
=  Boolean (HitGridView.DataController.GridView.GroupedItemCount );
end;

constructor TcxGridCollapseAllGroup.Create;
begin
  inherited
  ResCaption :
=  @cxSGridCollapseAllGroup;
  self.ImageIndex:
= 99 ;
end;

{TcxGridExport}
procedure TcxGridExport.Execute(Sender: TObject);
var
  SFD:TSaveDialog;
  FileName,FileExt:String;
begin
  SFD:
= TSaveDialog.Create(nil);
  SFD.Filter:
= ' Excel文件 (*.xls)|*.xls|XML文件 (*.xml)|*.xml|文本文件 (*.txt)|*.txt|网页文件 (*.html)|*.html ' ;
  SFD.Title:
= ' 导出为 ' ;
  SFD.DefaultExt:
= ' .XLS ' ;
  SFD.Options:
= [ofOverwritePrompt, ofEnableSizing];

  
if  not SFD.Execute then exit;
  FileName:
= SFD.FileName;
  FileExt:
= UpperCase(ExtractFileExt(FileName));

  
if  FileExt = ' .XLS '  then
    ExportGridToExcel(FileName,Self.GridPopupMenu.Grid)
    
else   if  FileExt = ' .XML '  then
         ExportGridToXML(FileName,self.GridPopupMenu.Grid)
         
else   if  FileExt = ' .TXT '  then
              ExportGridToText(FileName,Self.GridPopupMenu.Grid)
              
else   if  FileExt = ' .HTML '  then
                   ExportGridToHTML(FileName,Self.GridPopupMenu.Grid)
                   
else
                   begin
                      Application.MessageBox(
' 不支持的导出格式 ' ' xx ' );
                      Exit;
                   end;
   SFD.Free;                
end;

constructor TcxGridExport.Create;
begin
  inherited Create;
  ResCaption :
=  @cxSGridExport;
end;

function TcxGridExport.GetImageResourceName;
begin
  Result :
=  AImageName  +   ' 23 ' ;
end;


procedure TcxGridPrint.Execute(Sender: TObject);
begin
//  todo:Addcode
end;

constructor TcxGridPrint.Create;
begin
  inherited
  ResCaption:
= @cxSGridPrint;
  Self.ImageIndex:
= 99 ;
end;

 

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

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


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

你可能感兴趣的:(grid)