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:
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.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;
Ciao!![]()

Rispondi quotando