cxGrid作树形控件使用

来源:互联网 发布:jquery json remove 编辑:程序博客网 时间:2024/04/20 08:49
 企业应用开发时,经常要将数据树形显示,特别是分类数据和层次数据。Dev Express控件包提供了三种树形控件,TreeView和DbTree都很常用,相信大部分用过的朋友都不会太大的问题。而cxGrid也可用作树形控件!
     这里可能有人疑问:用得着吗?先说说cxGrid用于树形显示的场合:分类数据中,分类数据是动态的且和表格数据在同一表;树形控件和数据绑定主显示控件都基于同一数据源。
    去年11月份,有个同事整了半天cxGrid树,一直响应不了树节点焦点改变事件,求助于我。本大虾急公好义,向来以济世救民为己任。翻了半小时帮助解决问题。(cxGrid的帮助文件:安装路径/ExpressQuantumGrid 6/Help/EXPRESSQUANTUMGRID6.HLP)
    cxGrid树显示是通过设置分组字段进行设置,须将分组框隐藏,且设置好View的样式,使之看起来更清楚,必要的话还可设置背景图片。具体这些设置这里就略了。本文的重点是其事件响应的处理。
  添加View的OnFocusedRecordChanged事件处理:
procedure TForm1.cxGrid1DBTableView1FocusedRecordChanged(
  Sender: TcxCustomGridTableView; APrevFocusedRecord,
  AFocusedRecord: TcxCustomGridRecord;
  ANewItemRecordFocusingChanged: Boolean);
begin

end;

从字面意思,AFocusedRecord应该是主角,找到帮助中的TcxCustomGridRecord对象的描述,看到TcxGridGroupRow对象,嘿,就是我们要的东西。
下面是响应代码:
  case AFocusedRecord.Level of
    0:  if TcxGridGroupRow(AFocusedRecord).Value = '学术会议' then //0为顶层树节点
         ;
    1:  //0,1都有子节点
    2: //为最低层节点,无子节点
  end;
上面的代码处理树为硬编码三层树,实际应用中应该通过判断是否为TcxGridGroupRow对象,用一个While循环进行处理。
原创粉丝点击