Come modificare la colorazione nel componente TDBGrid

L’aggiunta di colore alle griglie del database migliorerà l’aspetto e differenzierà l’importanza di determinate righe o colonne all’interno del database. Lo faremo concentrandoci su DBGrid, che fornisce un ottimo strumento di interfaccia utente per la visualizzazione dei dati.

Daremo per scontato che tu sappia già come connettere un database a un componente DBGrid. Il modo più semplice per eseguire questa operazione è utilizzare la Creazione guidata modulo database. Selezionare il dipendente.db dall’alias DBDemos e selezionare tutti i campi eccetto EmpNo.

Colonne da colorare

La prima e più semplice cosa che puoi fare per migliorare visivamente l’interfaccia utente è colorare le singole colonne nella griglia sensibile ai dati. Lo faremo tramite la proprietà TColumns della griglia.

Seleziona il componente della griglia nel modulo e richiama l’editor delle colonne facendo doppio clic sulla proprietà delle colonne della griglia nell’Object Inspector.

L’unica cosa che resta da fare è specificare il colore di sfondo delle celle per una particolare colonna. Per il colore di primo piano del testo, vedere la proprietà del carattere.

Mancia: Per ulteriori informazioni sull’editor di colonne, cerca Editor di colonne: creazione di colonne persistenti nei file della guida di Delphi.

Righe da colorare

Se si desidera colorare la riga selezionata in un DBGrid ma non si desidera utilizzare l’opzione dgRowSelect (perché si desidera essere in grado di modificare i dati), è invece necessario utilizzare l’evento DBGrid.OnDrawColumnCell.

Questa tecnica dimostra come modificare dinamicamente il colore di testo in un DBGrid:

procedura TForm1.DBGrid1DrawColumnCell
(Mittente: TObject; const Rect: TRect;
DataCol: Integer; Colonna: TColumn;
Stato: TGridDrawState);
iniziare
if Table1.FieldByName ('Salary'). AsCurrency> 36000 poi
DBGrid1.Canvas.Font.Color: = clMaroon;
DBGrid1.DefaultDrawColumnCell
(Rect, DataCol, Column, State);
fine;

Ecco come cambiare dinamicamente il colore di un file fila in un DBGrid:

procedura TForm1.DBGrid1DrawColumnCell
(Mittente: TObject; const Rect: TRect;
DataCol: Integer; Colonna: TColumn;
Stato: TGridDrawState);
iniziare
if Table1.FieldByName ('Salary'). AsCurrency> 36000 poi
DBGrid1.Canvas.Brush.Color: = clWhite;
DBGrid1.DefaultDrawColumnCell
(Rect, DataCol, Column, State);
fine;

Colorare le cellule

Infine, ecco come modificare il file colore di sfondo delle celle di una particolare colonna, più il testo colore di primo piano:

procedura TForm1.DBGrid1DrawColumnCell
(Mittente: TObject; const Rect: TRect;
DataCol: Integer; Colonna: TColumn;
Stato: TGridDrawState);
iniziare
if Table1.FieldByName ('Salary'). AsCurrency> 40000 poi
iniziare
DBGrid1.Canvas.Font.Color: = clWhite;
DBGrid1.Canvas.Brush.Color: = clBlack;
fine;
if DataCol = 4 poi // La quarta colonna è "Stipendio"
DBGrid1.DefaultDrawColumnCell
(Rect, DataCol, Column, State);
fine;

Come puoi vedere, se lo stipendio di un dipendente è maggiore di 40 mila, la sua cella Salario viene visualizzata in nero e il testo viene visualizzato in bianco.