Una segnalazione visuale dello stato può essere di aiuto nella visualizzazione della griglia: potresti evidenziare, ad esempio, la cella relativa al campo dello stato con un colore verde per indicare il LIBERO, oppure ROSSO per indicare lo stato di occupato.
Per gestire questa funzionalità, devi intercettare l'evento OnDrawColumnCell e scrivere codice simile al seguente:
codice:
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
case DataCol of
0:
begin
if Column.Field.AsInteger = 1 then
DBGrid1.Canvas.Brush.Color := clLime
else
DBGrid1.Canvas.Brush.Color := clRed;
DBGrid1.Canvas.FillRect(Rect);
end;
end;
end;
Il costrutto case è stato usato per gestire il caso in cui questo evento dovesse essere utilizzato anche per intervenire sul disegno di altre colonne (in questo caso, solo la prima viene influenzata, avente indice 0, ma tu devi sostituire l'indice della tua colonna osservando la proprietà Columns dell'oggetto DBGrid). L'oggetto Column rappresenta appunto la colonna associata che ci permette anche di ottenere il riferimento al campo da ispezionare: se il valore intero vale 1 (stato "libero"), impostiamo un colore di sfondo verde, altrimenti impostiamo un colore rosso. La chiamata al metodo Canvas.FillRect consente di riempire il rettangolo della cella, passato come parametro, usando il colore selezionato.
Ciao!