设置 cxGrid 的某列的 CellMerging 属性可使这一列相同值的单元格合并。
但是这样达不到我想要的效果,我是想根据某列的值,如果这一列值相同,才合并其它列值相同的单元格。
比如一个主从表数据表,列包括:出库单号、物料类别、物料名称,只有出库单号相同的一些行内,物料类别相同的才合并。这样可使数据显示更直观。我查了以前的帖子,没有,哪位高人指点一下?

解决方案 »

  1.   

    这个跟 SQL 有啥关系啊?
      

  2.   

    怎么现在编程的都想坐想其成,不愿自己动脑写呢,这样除了成为控件使用的用户,delphi的能力又有多大的提高呢?
      

  3.   

    建议使用stringgrid和临时表解决
      

  4.   

    有一个叫EhLib_4.1.4的控件,可以满足你的要求。你想怎么合并都可以。
      

  5.   

    to hmzgz81(哩翱)
    你说的没错!cxGrid 功能如此强大,本来以为靠设置 cxGrid 的属性就可以实现这个功能,
    看来是不行,我会好好研究,争取实现这个功能。
      

  6.   

    Grid是无法做到你说的要求,用select语句先合并成你要的结果,再显示到Grid中,
      

  7.   

    哈哈!最近在用CXGrid 也要实现这样的功能, 可以实现的, 在每个列的OnCompareRowValuesForCellMerging 中加入如下代码 DBView1SYDID 是你要判断值相同才合并的列procedure TShiYangList.DBView1MySYDIDCompareRowValuesForCellMerging(
      Sender: TcxGridColumn; ARow1: TcxGridDataRow;
      AProperties1: TcxCustomEditProperties; const AValue1: Variant;
      ARow2: TcxGridDataRow; AProperties2: TcxCustomEditProperties;
      const AValue2: Variant; var AAreEqual: Boolean);
    begin
      if ARow1.Values[DBView1SYDID.Index] = ARow2.Values[DBView1SYDID.Index] then
        AAreEqual := True
      else
        AAreEqual := False;
    end;
    但是我还有一个问题,就是合并后的单元格的值不能直接修改,要另外写代码,比较麻烦。
    不知道有没有好的办法,可以直接修改,并立即显示修改后的值?