FMenuItem.Caption := '收缩所有组(&O)'; FMenuItem.OnClick := miCollapseAllGroupClick; TPopupMenu(AMenu).Items.Add(FMenuItem);
//-------------------------
FMenuItem := TMenuItem.Create(Self); FMenuItem.Caption := '-';
TPopupMenu(AMenu).Items.Add(FMenuItem);
//过滤面板
FMenuItem := TMenuItem.Create(Self); FMenuItem.Name := 'miFilterPanel'; FMenuItem.Caption := '过滤面板(&P)'; //自动显示
FSubMenuItem := TMenuItem.Create(Self); FSubMenuItem.Name := 'miFilterPanelAuto'; FSubMenuItem.Caption := '自动(&A)'; FSubMenuItem.RadioItem := True;
FSubMenuItem.GroupIndex := 5; //指定同一组 FSubMenuItem.Checked := True;
FSubMenuItem.OnClick := miFilterPanelClick; FMenuItem.Add(FSubMenuItem); //加入二级子菜单 //总是显示
FSubMenuItem := TMenuItem.Create(Self); FSubMenuItem.Name := 'miFilterPanelAlways'; FSubMenuItem.Caption := '总是显示(&W)'; FSubMenuItem.RadioItem := True; FSubMenuItem.GroupIndex := 5;
FSubMenuItem.OnClick := miFilterPanelClick; FMenuItem.Add(FSubMenuItem); //从不显示
FSubMenuItem := TMenuItem.Create(Self); FSubMenuItem.Name := 'miFilterPanelNerver'; FSubMenuItem.Caption := '从不显示(&N)'; FSubMenuItem.RadioItem := True; FSubMenuItem.GroupIndex := 5;
FSubMenuItem.OnClick := miFilterPanelClick; FMenuItem.Add(FSubMenuItem);
TPopupMenu(AMenu).Items.Add(FMenuItem);
//自定义过滤
FMenuItem := TMenuItem.Create(Self); FMenuItem.Name := 'miCustomFilter'; FMenuItem.Caption := '自定义过滤(&M)';
FMenuItem.OnClick := miCustomFilterClick; TPopupMenu(AMenu).Items.Add(FMenuItem);
//过滤管理器
FMenuItem := TMenuItem.Create(Self); FMenuItem.Name := 'miFilterBuilder';
TPopupMenu(AMenu).Images.AddImage(FormMain.ImageListExtend, 44); //添加图标图像 FMenuItem.ImageIndex := TPopupMenu(AMenu).Images.Count - 1; //指定图标序号 FMenuItem.Caption := '过滤管理器';
FMenuItem.OnClick := Self.miFilterBuilderClick; TPopupMenu(AMenu).Items.Add(FMenuItem);
//---------------------
FMenuItem := TMenuItem.Create(Self); FMenuItem.Caption := '-';
TPopupMenu(AMenu).Items.Add(FMenuItem);
//导出
FMenuItem := TMenuItem.Create(Self); FMenuItem.Name := 'miExport';
TPopupMenu(AMenu).Images.AddImage(FormMain.ImageListExtend, 37); FMenuItem.ImageIndex := TPopupMenu(AMenu).Images.Count - 1; FMenuItem.Caption := '导出(&E)'; FMenuItem.OnClick := Self.miExportClick; TPopupMenu(AMenu).Items.Add(FMenuItem);
//打印
FMenuItem := TMenuItem.Create(Self); FMenuItem.Name := 'miPrint'; FMenuItem.Caption := '打印(&P)';
TPopupMenu(AMenu).Images.AddImage(FormMain.ImageListExtend, 14); FMenuItem.ImageIndex := TPopupMenu(AMenu).Images.Count - 1; FMenuItem.OnClick := Self.miPrintClick; TPopupMenu(AMenu).Items.Add(FMenuItem); end; end;
procedure TFormItemList.miExportClick(Sender: TObject); var
FileName, FileExt, msg: String; begin
if Self.aqyQuery.IsEmpty then begin
msg := '没有导出数据...';
Application.MessageBox(PChar(msg), PChar(Application.Title), MB_OK or MB_IconWarning); Exit; end;
Self.SaveDialogExport.Filter := 'Excel文件 (*.xls)|*.xls|XML文件 (*.xml)|*.xml' + '|文本文件 (*.txt)|*.txt|网页文件 (*.html)|*.html'; Self.SaveDialogExport.Title := '导出为';
if not Self.SaveDialogExport.Execute then Exit;
FileName := Self.SaveDialogExport.FileName; FileExt := LowerCase(ExtractFileExt(FileName)); if FileExt = '.xls' then
ExportGrid4ToExcel(FileName, Self.cxGrid1) else if FileExt = '.xml' then
ExportGrid4ToXML(FileName, Self.cxGrid1) else if FileExt = '.txt' then
ExportGrid4ToText(FileName, Self.cxGrid1) else if FileExt = '.html' then
ExportGrid4ToHTML(FileName, Self.cxGrid1) else begin
msg := '不支持的导出文件类型...';
Application.MessageBox(PChar(msg), PChar(Application.Title), MB_OK or MB_IconError); Exit; end;
msg := '导出完成...';
Application.MessageBox(PChar(msg), PChar(Application.Title), MB_OK or MB_IconInformation); end;
procedure TFormItemList.miPrintClick(Sender: TObject); begin //打印
Self.dxComponentPrinter.Preview(True, Self.dxComponentPrinterLink1); end;
procedure TFormItemList.cxGridPopupMenuPopup(ASenderMenu: TComponent; AHitTest: TcxCustomGridHitTest; X, Y: Integer; var AllowPopup: Boolean); begin
if GetHitTypeByHitCode(AHitTest.HitTestCode) = gvhtColumnHeader then //右击列标题时 begin
//if tvResult.DataController.Groups.GroupingItemCount > 0 then if tvResult.GroupedColumnCount > 0 then //有分组时显示 begin
TMenuItem(Self.FindComponent('miLineForGroup')).Visible := True; TMenuItem(Self.FindComponent('miExpandAllGroup')).Visible := True; TMenuItem(Self.FindComponent('miCollapseAllGroup')).Visible := True; end else begin
TMenuItem(Self.FindComponent('miLineForGroup')).Visible := False; TMenuItem(Self.FindComponent('miExpandAllGroup')).Visible := False; TMenuItem(Self.FindComponent('miCollapseAllGroup')).Visible := False; end; end; end;
procedure TFormItemList.miFilterBuilderClick(Sender: TObject); begin
//过滤管理器
//弹出Filter Builder Dialog对话框 tvResult.Filtering.RunCustomizeDialog; end;
procedure TFormItemList.miCustomFilterClick(Sender: TObject); var
AHitTest: TcxCustomGridHitTest; begin
//自定义过滤
//弹出Custom Filter Dialog对话框 AHitTest := cxGridPopupMenu.HitTest;
if GetHitTypeByHitCode(AHitTest.HitTestCode) = gvhtColumnHeader then //获得右击的列 tvResult.Filtering.RunCustomizeDialog(TcxGridColumnHeaderHitTest(AHitTest).Column); end;
procedure TFormItemList.miFilterPanelClick(Sender: TObject); var
mi: TMenuItem; begin
//隐藏/显示过滤面板
mi := TMenuItem(Sender); mi.Checked := True;
if mi.Name = 'miFilterPanelAlways' then
tvResult.Filtering.Visible := fvAlways
else if mi.Name = 'miFilterPanelNerver' then tvResult.Filtering.Visible := fvNever else
tvResult.Filtering.Visible := fvNonEmpty; end;
procedure TFormItemList.miExpandAllGroupClick(Sender: TObject); begin
//展开所有组
tvResult.DataController.Groups.FullExpand; end;
procedure TFormItemList.miCollapseAllGroupClick(Sender: TObject); begin
//收缩所有组
tvResult.DataController.Groups.FullCollapse; end;
**************************************************************************** 26 根据某列的值设定其它列的可编辑性 解决:
procedure TFormUser.tvUserEditing(Sender: TcxCustomGridTableView; AItem: TcxCustomGridTableItem; var AAllow: Boolean); begin
//如果第三列值为True,则第4列不能修改
if (tvUser.Controller.FocusedRecord.Values[2] = True) and (AItem.Index = 4) then AAllow := False else
AAllow := True; end;
**************************************************************************** 27 保存/恢复Grid布局 解决:
网格左上角的自定义布局按钮:
TableView-?OptionsCustiomize?ColumnsQuickCustomization true; //恢复布局
IniFileName := ExtractFilePath(Application.ExeName) + 'Layout/' + Self.Name + '.ini'; if FileExists(IniFileName) then
Self.tvResult.RestoreFromIniFile(IniFileName) //从布局文件中恢复 else begin
Self.tvResult.BeginUpdate;
for i := 0 to Self.tvResult.ItemCount - 1 do
百度搜索“70edu”或“70教育网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,70教育网,提供经典综合文库delphi控件cxGrid用法大全(3)在线全文阅读。
相关推荐: