如何实现CxGrid列拖拽隐藏功能及弹出列隐藏自定义对话框
CxGrid 列隐藏功能实现方案
我们需要实现两类CxGrid列隐藏需求:
- 通过拖拽操作隐藏CxGrid的列
- 弹出自定义对话框实现列隐藏
实现效果参考下图:
1. 拖拽隐藏列实现
CxGrid原生支持拖拽隐藏列功能,仅需开启对应配置项即可:
- 找到对应Grid绑定的
TableView组件,定位到OptionsCustomize属性组 - 将
ColumnMoving属性设为True,开启列拖拽权限 - 将
ColumnHiding属性设为True,开启拖拽隐藏功能
配置完成后,运行时用户拖动列头到Grid区域外,即可触发对应列隐藏;需要恢复时调出列选择列表拖回列头区域即可。
2. 自定义对话框隐藏列实现
如果需要更灵活的批量列显示/隐藏控制,可以自己实现自定义对话框:
- 新建一个对话框窗体,添加列表勾选控件(如TCheckListBox),初始化时遍历Grid所有列,将列标题填充到勾选列表中,同步当前列的可见状态到勾选状态
- 在Grid的列头右键菜单或者工具栏中添加「列设置」入口,点击后弹出上述自定义对话框
- 用户勾选调整完成后点击确认,遍历勾选列表的状态,同步设置对应列的
Visible属性,代码示例如下:
var i: Integer; begin // 同步勾选状态到列可见性 for i := 0 to cxGrid1TableView1.ColumnCount - 1 do begin cxGrid1TableView1.Columns[i].Visible := CheckListBox1.Checked[i]; end; end;
- 若需要持久化用户的列显示偏好,可以将各列的可见状态存储到本地配置文件/注册表,下次打开Grid时自动读取恢复即可。
内容的提问来源于stack exchange,提问作者Ahmed Bellil
相关产品推荐
相关产品推荐

