ehlib以前的版本的代码在5.6后好些不能兼容运行了,因为是直接从ehlib3.0跳到ehlib5.6,以前使用过几天因为一些原因没用,最近使用的时候发现在设置数据行颜色的时候不能设置了,以前的代码不能编译了。主要是这句 suiScan.DefaultDrawColumnCell(Rect, DataCol, Column, State);
不能在
procedure TfrmPandian.suiScanDrawColumnCell(Sender: TObject;    const Rect: TRect; DataCol: Integer; Column: TColumnEh;    State: TGridDrawState);
里面编译运行了。

解决方案 »

  1.   

    也有可能你引用了 dbgrid , 函数冲突。
      

  2.   

    是不是引用了 dbgrid ?
      

  3.   

    procedure TfrmMain.sdbgfRQFormDrawColumnCell(Sender: TObject;
      const Rect: TRect; DataCol: Integer; Column: TColumnEh;
      State: TGridDrawState);
    begin
      if (Column.FieldName = 'ReceiveFlag') then
      begin
        if
          Trim(TDBGridEh(Sender).DataSource.DataSet.FieldByName('ReceiveFlag').AsString
          ) = '已核收' then
        begin
          TDBGridEh(Sender).Canvas.Brush.Color := clGreen;
          TDBGridEh(Sender).Canvas.Font.Color := clWhite;
          TDBGridEh(Sender).DefaultDrawColumnCell(Rect, DataCol, Column, State);
        end;
        if
          Trim(TDBGridEh(Sender).DataSource.DataSet.FieldByName('ReceiveFlag').AsString
          ) = '未采样' then
        begin
          TDBGridEh(Sender).Canvas.Brush.Color := clRed;
          TDBGridEh(Sender).Canvas.Font.Color := clWhite;
          TDBGridEh(Sender).DefaultDrawColumnCell(Rect, DataCol, Column, State);
        end;
      end;
    end;
      

  4.   

    非常感谢楼上的解答,经过测试发现的确可以的。并且学会了对多个单元格和行设置颜色的方法了。
    将设置颜色的放在if (Column.FieldName = 'ReceiveFlag') then外面就是设置整行的,放在里面就是设置单元格的颜色的。
      

  5.   

    我也遇到这个问题:
    ehlib以前的版本的代码在5.6后好些不能兼容运行了,因为是直接从ehlib3.0跳到ehlib5.6,以前使用过几天因为一些原因没用,最近使用的时候发现在设置数据行颜色的时候不能设置了,以前的代码不能编译了。主要是这句 suiScan.DefaultDrawColumnCell(Rect, DataCol, Column, State);
    不能在
    procedure TfrmPandian.suiScanDrawColumnCell(Sender: TObject;    const Rect: TRect; DataCol: Integer; Column: TColumnEh;    State: TGridDrawState);
    里面编译运行了。请问你到底是怎么解决的呢?是以下这个原因吗?
    引用 5 楼 delphi_911 的回复:
    是不是引用了 dbgrid ?我确信已经没有引用dbgrid了,但是还是一样报 Incompatible types的错误。
      

  6.   

    就是将suiScan.DefaultDrawColumnCell(Rect, DataCol, Column, State);
    替换为TDBGridEh(Sender).DefaultDrawColumnCell(Rect, DataCol, Column, State);
    就可以了。