delphi控件cxGrid用法大全(3)

来源:网络收集 时间:2025-07-26 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xuecool-com或QQ:370150219 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

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)在线全文阅读。

delphi控件cxGrid用法大全(3).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.70edu.com/wenku/460570.html(转载请注明文章来源)
Copyright © 2020-2025 70教育网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:370150219 邮箱:370150219@qq.com
苏ICP备16052595号-17
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:7 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219