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);
里面编译运行了。
不能在
procedure TfrmPandian.suiScanDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumnEh; State: TGridDrawState);
里面编译运行了。
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;
将设置颜色的放在if (Column.FieldName = 'ReceiveFlag') then外面就是设置整行的,放在里面就是设置单元格的颜色的。
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的错误。
替换为TDBGridEh(Sender).DefaultDrawColumnCell(Rect, DataCol, Column, State);
就可以了。