может вот так подойдет?
| Код | procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); var ARect0,ARect1:Trect; function GetCellRect(ADatacol:integer):TRect; begin Result:=TFakeGrid(Sender).CellRect(ADataCol+1,TFakeGrid(Sender).Row); end; begin with TDBGrid(Sender) do begin ARect0:=GetCellRect(0); ARect1:=GetCellRect(1); if (gdSelected in State) or (gdFocused in State) then begin if Columns[0].Field.AsString<>Columns[1].Field.AsString then begin Canvas.Font.Color:=clLime; Canvas.TextRect(ARect0,ARect0.Left,ARect0.Top,Columns[0].Field.AsString); Canvas.Font.Color:=clRed; Canvas.TextRect(ARect1,ARect1.Left,ARect1.Top,Columns[1].Field.AsString); end else begin Canvas.Font.Color:=clgreen; Canvas.TextRect(ARect0,ARect0.Left,ARect0.Top,Columns[0].Field.AsString); Canvas.Font.Color:=clGreen; Canvas.TextRect(ARect1,ARect1.Left,ARect1.Top,Columns[1].Field.AsString); end; end; end; end;
|
В GetCellRect передается индекс колонки которую будешь красить. Соответственно у меня здесь сравниваются данные по колонкам 0 и 1. |