Kolorowanie komórki DBgrid

0

Jak mogę pokolorować jakąś komórkę w danej kolumnie Dbgrida?

Chcę napisać warunek if jakaś komórka ma wartość np. 7 then koloruj tą komórkę na żółto;

Czy ktoś wie jak pokolorować komórkę? Dzięki za odpowiedź.

0

Można użyć zdarzenia onCustomDrawCell, oto przykładowy kod do jego obsługi...

procedure TMainForm.dxDBGridCustomDrawCell(Sender: TObject; ACanvas: TCanvas;
ARect: TRect; ANode: TdxTreeListNode; AColumn: TdxTreeListColumn;
ASelected, AFocused, ANewItemRow: Boolean; var AText: String;
var AColor: TColor; AFont: TFont; var AAlignment: TAlignment;
var ADone: Boolean);
var
Value: Variant;
begin
if not ASelected and (AColumn = dxDBGridKolumnaDoPokolorowania) then begin
Value := ANode.Values[AColumn.Index];
if not VarIsNull(Value) then begin
if Value = 7 then
AColor := clYellow
else
AColor := clLime;
end;
end;
end;

:) powodzenia

0

Prosty i niezawodny sposób na pokolorowanie komórki DBGrid o jakiejś wartości:

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if Table1.FieldByName('Errors').AsCurrency=0 then
begin
   DBGrid1.Canvas.Font.Color:=clblack;
   DBGrid1.Canvas.Brush.Color:=clyellow;
end;
if DataCol = 2 then //2 kolumna to 'Errors'
  DBGrid1.DefaultDrawColumnCell
    (Rect, DataCol, Column, State);
end;

TŁUMACZENIE:
Jeśli w Tabeli 1, w kolumnie 'Errors' jakaś komórka posiada wartość równą 0
to czcionka tej wartości będzie czarna i tło komórki - żółte.
Resztę komórek tej kolumny zostaw jak jest w oryginale.

Proste nie? :)

0

zgłasza błąd kompilator: color: #0000FF">

1 użytkowników online, w tym zalogowanych: 0, gości: 1