Skifte tekstfarve i de enkelte celler i et DBGrid
Jeg har følgende procedureprocedure TfDBDriver.DBGridConnectionsDrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
var
Grid : TDBGrid;
begin
with Sender as TDBGrid do
begin
Grid := (Sender as TDBGrid);
try
if (Grid.Columns[DataCol].FieldName = 'State') or (Grid.Columns[DataCol].FieldName = 'SHOnOff') then
begin
if (Grid.Columns[DataCol].FieldName = 'State') then
begin
Canvas.FillRect(Rect);
if Grid.Columns[DataCol].Field.Value > -1 then
ImageList2.Draw(Canvas,((Rect.Right - Rect.Left) div 2)+Rect.Left-8
,Rect.Top, Grid.Columns[DataCol].Field.Value ,True);
end else
begin
if Grid.Columns[DataCol].Field.Value = 'Off' then
begin
Grid.Columns[DataCol].Font.Color := clRed;
Grid.Columns[DataCol].Font.Style := [fsBold];
end;
if Grid.Columns[DataCol].Field.Value = 'On' then
begin
Grid.Columns[DataCol].Font.Color := clGreen;
Grid.Columns[DataCol].Font.Style := [];
end;
end;
end else
DefaultDrawColumnCell(Rect,DataCol,Column,State);
except
end;
// ShowScrollbar(Grid.Handle, SB_HORZ, False);
end;
Den øverste del sætter et icon ind i DBGridet alt efter hvilket værdi state har, det virker ok
Nederste del skal hvis SHOnOff = Off farve teksten rød og bold, hvis on skal teksten bare være rød.
Denne del fungere imidlertid ikke, den står og opdatere felterne hele tiden ? og det er tilfældigt hvilke der bliver røde og grønne.
Hvem kan se hvad der går galt ?
