Виділення кольором осередку в dbgrid

Виділення кольором осередку в DBGrid

як можна зробити певну комірку іншим кольором
на приклад якщо в даній комірці слово "зелений" то осередок зелена а якщо слово "червоний" то вона червона

обробляй onDrawColumnCell # XA0; сітки.
приблизно так:
if (QueryActiveDogovors.FieldByName ( "OnDatePaid"). AsDateTime) = date () then begin
# XA0; # XA0; # XA0; # XA0; # XA0; DBGridActiveDogovors.Canvas.Font.Color: = clBlue;
end;

А якщо в осередку слово "сіро-буро-малиновий"?

У принцепе вийшло, але трохи не те що я хотів, вона виділяється кольором тоді коли на ній стоїть курсор, а мені б хотілося що б вона почервоніла при виведенні на екран, ну тобто коли база відкрилася необхідні осередки виділилися б червоним кольором
сам текст вигледят так


# XA0; if ADOTable1.FieldByName ( "S_DATE"). AsString = "" then
# XA0; # XA0; DBGrid1.Canvas.Font.Color: = clred;

це в OnDrawColumnCell об'єкта DbGrid

А обробку не в OnDrawData Cell треба?

ADOTable1.FieldByName ( "S_DATE"). AsString = ""
для поточного запису незалежно від того, де стоїть курсор. Очевидно цей код варто всередині ще якогось if

to Соловйов
Дякую за посилання вона вирішила всі мої запитання, щодо виділення.
Це спосіб виділення коли на цій комірці стоїть курсор

procedure TForm1.DBGrid1DrawColumnCell (Sender: TObject; const Rect: TRect;
# XA0; DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
# XA0; if ADOTable1.FieldByName ( "S_DATE"). AsString = "" then
# XA0; DBGrid1.Canvas.Font.Color: = clred;
end;


procedure TForm1.DBGrid1DrawColumnCell (Sender: TObject; const Rect: TRect;
# XA0; DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
# XA0; if ADOTable1.FieldByName ( "S_DATE"). AsString = "" then

якщо необхідно виділяти тільки дану комірку то додаємо ще одну умову

# XA0; if Column.FieldName = "S_DATE" then


with # XA0; DBGrid1.Canvas do
begin
# XA0; Brush.Color: = clGreen;
# XA0; Font.Color: = clWhite;
# XA0; FillRect (Rect);
# XA0; TextOut (Rect.Left + 2, Rect.Top + 2, Column.Field.Text);
end;
end;

to ЮЮ
ні даний код ні в якому if боліе не замішана. (В інших порочних зв'язках теж :-))

to _ALEXey_ # XA0; я ще не докінця розібрався з обработчиками але на мою
OnDrawColumnCell - впливає на зовнішній вигляд осередку, а
OnDrawDataCell # XA0; - впливає на вміст комірки,
але це моє суб'єктивного не розібравшись до кінця думку

Постав DBGrid1.DefaultDrawing = false, а в кінці обробника додай:

TDBGrid (Sender) .DefaultDrawColumnCell (Rect, DataCol, Column, State);