在查询显示的时候我要这样的效果,某一列如果 相连几行的记录值相同,则它们自己之间的网格线不显示,其他列不影响
如  -----------
  |   1001   |
  |          |------
  |          |
  ------------------
  |   1002   |
  |          |-------
  -------------------
原来在PB里可以,不知道delphi中行不行?????

解决方案 »

  1.   

    好像 EhLib 3.6 可以办到 :)
      

  2.   

    http://community.csdn.net/Expert/topic/3634/3634929.xml?temp=.9067041
    http://community.csdn.net/Expert/topic/3634/3634989.xml?temp=.7271997
    这个问题我也方表过,至今还没有解决,以上是我发表的?
      

  3.   

    自己在OnDrawColumnCell里画吧,无非就是检查某字段和上一条记录的字段值是否相同,相同则不画,不同就画呗。
      

  4.   

    做也不会太难的。如下:
    先建立一个全局TAdoDataset,并且将adoquery1的内容克隆过去。
    ADODataSet1.Clone(adoquery1,ltReadOnly);
    然后写dbgrid的OnDrawColumnCell事件函数:
    procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    var
      privateValue:String;
    begin
      with TDBgrid(Sender) do
      begin
        if (DataCol=0) then //and (not DataSource.DataSet.Eof) and ( not DataSource.DataSet.Bof) then
        begin
          Canvas.Brush.Style := bsClear;
          ADODataSet1.Locate('fieldname1;fieldname2',vararrayof([DataSource.DataSet.fieldbyname('fieldname1').AsString,DataSource.DataSet.fieldbyname('fieldname2').AsString]),[]);
          ADODataSet1.Prior;
          if adodataset1.Bof then
            privateValue:=''
          else
            privateValue:=ADODataSet1.fieldbyname('fieldname1').AsString;
          if (gdSelected in state) or (gdFocused in state) then
          begin
            Canvas.Brush.Color:=clNavy;
            Canvas.Font.Color:=clWhite;
          end
          else
          begin
            Canvas.Brush.Color:=clWhite;
            Canvas.Font.Color:=clBlack;
          end;
          if (column.Field.AsString=privateValue) then
          begin
            mRect:=rect;
            canvas.FillRect(mRect);
          end
          else
          begin
            canvas.FillRect(Rect);
            canvas.TextOut(rect.Left+2,rect.Top+2,column.field.AsString);
          end;
        end
        else
        begin
          DefaultDrawColumnCell(rect,datacol,column,state);
        end;
      end;
    end;
    只需要在更改Adoquery的时候保持adodataset同步即可。
      

  5.   

    如果需要更多列,自己对不同DataCol分别处理即可。