Comment changer la coloration dans le composant TDBGrid

L'ajout de couleur à vos grilles de base de données améliorera l'apparence et différenciera l'importance de certaines lignes ou colonnes dans la base de données. Nous le ferons en nous concentrant sur DBGrid, qui fournit un excellent outil d'interface utilisateur pour afficher les données.

Nous supposerons que vous savez déjà comment connecter une base de données à un composant DBGrid. La façon la plus simple d'y parvenir est d'utiliser l'Assistant Formulaire de base de données. Sélectionnez le employee.db à partir de l'alias DBDemos et sélectionnez tous les champs sauf EmpNo.

Colonnes à colorier

La première chose et la plus simple que vous puissiez faire pour améliorer visuellement l'interface utilisateur est de colorer des colonnes individuelles dans la grille orientée données. Nous accomplirons cela via la propriété TColumns de la grille.

Sélectionnez le composant de grille dans le formulaire et appelez l'éditeur de colonnes en double-cliquant sur la propriété Colonnes de la grille dans l'inspecteur d'objets.

La seule chose qui reste à faire est de spécifier la couleur d'arrière-plan des cellules pour une colonne particulière. Pour la couleur du premier plan du texte, voir la propriété font.

Pointe: Pour plus d'informations sur l'éditeur de colonnes, recherchez Éditeur de colonnes: création de colonnes persistantes dans vos fichiers d'aide Delphi.

Coloration des lignes

Si vous souhaitez colorer la ligne sélectionnée dans un DBGrid mais que vous ne souhaitez pas utiliser l'option dgRowSelect (car vous voulez pouvoir modifier les données), vous devez plutôt utiliser l'événement DBGrid.OnDrawColumnCell.

Cette technique montre comment changer dynamiquement la couleur de texte dans un DBGrid:

procédure TForm1.DBGrid1DrawColumnCell
(Expéditeur: TObject; const Rect: TRect;
DataCol: Entier; Colonne: TColonne;
État: TGridDrawState);
commencer
si Table1.FieldByName ('Salary'). AsCurrency> 36000 ensuite
DBGrid1.Canvas.Font.Color: = clMaroon;
DBGrid1.DefaultDrawColumnCell
(Rect, DataCol, Colonne, État);
fin;

Voici comment changer dynamiquement la couleur d'un rangéedans un DBGrid:

procédure TForm1.DBGrid1DrawColumnCell
(Expéditeur: TObject; const Rect: TRect;
DataCol: Entier; Colonne: TColonne;
État: TGridDrawState);
commencer
si Table1.FieldByName ('Salary'). AsCurrency> 36000 ensuite
DBGrid1.Canvas.Brush.Color: = clWhite;
DBGrid1.DefaultDrawColumnCell
(Rect, DataCol, Colonne, État);
fin;

Cellules à colorier

Enfin, voici comment changer le Couleur de l'arrière plan des cellules d'une colonne particulière, plus le texte couleur de premier plan:

procédure TForm1.DBGrid1DrawColumnCell
(Expéditeur: TObject; const Rect: TRect;
DataCol: Entier; Colonne: TColonne;
État: TGridDrawState);
commencer
si Table1.FieldByName ('Salary'). AsCurrency> 40000 ensuite
commencer
DBGrid1.Canvas.Font.Color: = clWhite;
DBGrid1.Canvas.Brush.Color: = clBlack;
fin;
si DataCol = 4 ensuite // La 4 e colonne est «Salaire»
DBGrid1.DefaultDrawColumnCell
(Rect, DataCol, Colonne, État);
fin;

Comme vous pouvez le voir, si le salaire d'un employé est supérieur à 40 000, sa cellule Salaire est affichée en noir et le texte est affiché en blanc.