鉴于本人首次设定cxGrid的CheckBox的时候费了很大劲,发现很多人都会碰到这个问题,现在总结一下,以供各位互相学习借鉴。

步骤如下(不分先后):

1、 cxGrid添加完自己所需的所有字段后,增加一个字段用来显示CheckBox勾选框,比如叫做Selected(至于Caption要不要设定,看你自己喜欢是否想看到栏位名称了),那么tableview中此字段的DataBinding下面的FieldName就设为Selected,并注意Options中的Editing要为True,还要设定Properties属性的ValueChecked属性和ValueUnchecked属性,这里比如分别设定为'Y','N'。

2、设定cxGrid所连接的DataSource对应的ClientDataset,编辑ClientDataset,增加自己正常需要的所有字段,然后再增加一个单独作为我们设定的用来显示勾选的字段,前面已经有名字了'Selected'(宽度设定大于2个字节都可以了,也就是为了保存之前设定的'Y'或者'N',属性是WildString),需要注意的是:FieldType一定要选择fkInternalCalc,当然FieldName也是'Selected'。

3、在cxGrid的TableView的OnCellDblclick事件中写勾选与否的点击处理代码,比如如下例子:

procedure TfrmImmunIseplanAdd.cxGrid1DBTableView1CellDblClick(
  Sender: TcxCustomGridTableView;
  ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton;
  AShift: TShiftState; var AHandled: Boolean);
begin
  inherited;
  cdsGROWSORT.Edit ;
  if cdsGROWSORT.FieldByName('Selected').AsString ='N' then
    cdsGROWSORT.FieldByName('Selected').AsString:='Y'
  else
    cdsGROWSORT.FieldByName('Selected').AsString:='N';
end;

4、初始化勾选栏位,否则就是灰色的而且已经勾选了,如何初始化,基本上就是遍历ClientDataSet然后把'Selected'字段值赋值为'N',也就是非勾选状态。比如如下例子:

if (cdsGROWSORT.Active) and (cdsGROWSORT.RecordCount>0) then
  begin
    cdsGROWSORT.First;
    while not cdsGROWSORT.Eof do
    begin
      cdsGROWSORT.Edit ;
      cdsGROWSORT.FieldByName('Selected').AsString :='N';
      cdsGROWSORT.Next;
    end;
  end;

注意:如果说cxGrid有很多数据记录要在窗口打开的时候就显示出来,那么你的ClientDataset的SQL语句不可以有'Selected'这个字段,也就是说这个字段不在你的数据查询记录中,不和数据库关联。

以上四个步骤不分先后,只要一一都这样设定一定可以实现想要的勾选框了。第一次写,呵呵,还真是费脑筋,就当作给自己一个加深印象的事情吧,呵呵。

最新文章

  1. 主机使用代理上网,虚拟机Linux如何连外网
  2. MySQL中varchar转int
  3. 在Linux中让打印带颜色的字
  4. ZZmsvcprt.lib(MSVCP90.dll) : error LNK2005:已经在libcpmtd.lib(xmutex.obj) 中定义 .的分析解决办法 (转)
  5. .NET GC机制学习笔记
  6. 51nod 1092 回文字符串 (dp)
  7. Oracle 基础 <1> --存储过程
  8. Mac Mysql5.7.11安装和卸载
  9. nutch-1.7-二次开发-Content中增加编码
  10. linkButton
  11. 如何快速部署国人开源的 Java 博客系统 Tale
  12. Perl进程间通信
  13. d3js可视化策略
  14. 【js】JSDoc 注释规范
  15. MyBatis-注解方式整合SSM
  16. tensorflow 学习1——tensorflow 做线性回归
  17. 正则判断 文件名是否为zip格式
  18. spark RDD 常见操作
  19. (转)链接服务器——获取EXCEL数据
  20. CentOS下rpm指令和yum指令详解

热门文章

  1. Centos7配置IP地址和DNS
  2. Python-函数练习题1
  3. Python之open()函数
  4. CMDB_Agent_ssh版本分析
  5. 基于 HTML5 WebGL 的 智慧楼宇能源监控系统
  6. 终极解决方案——sbt配置阿里镜像源,解决sbt下载慢,dump project structure from sbt耗时问题
  7. PyTorch 实战-张量
  8. 【python系统学习11】循环语句里的F4
  9. Python python 数据类型的相互转换
  10. Android进阶之AIDL的使用详解