2014-05-21 1 views
0

J'essaie de changer la couleur d'une cellule Titre dans une colonne particulière d'un composant DBGRID dans Delphi XE6. J'avais l'habitude de peindre le titre de colonne quand la grille a été triée par cette certaine colonne.Colonnes DBGRID Titre Couleur

DBGRID1.Columns[1].Title.Color := clBlue; 

Est-ce possible? Ou est-il un meilleur moyen de mettre en évidence la colonne triée?

+0

Avez-vous essayé 'DBGrid1.Columns [1] .Title.Font.Color: = clBlue;'? –

+0

Pouvez-vous préciser ce que vous entendez par "changer la couleur d'une cellule Titre"? Voulez-vous dire la couleur de la police, ou la couleur de la cellule elle-même (en-tête de colonne)? –

+0

Généralement, un petit glyphe est dessiné pour indiquer les colonnes clés. Nécessite du code. Si je me souviens bien, JvDBGrid l'a eu par défaut. –

Répondre

1

procédure de remplacement try TCustomDBGrid.DrawCellBackground pour forcer la couleur de fond du titre:

procedure TMyDBGrid.DrawCellBackground(const ARect: TRect; AColor: TColor; AState: TGridDrawState; ACol, ARow: integer); 
begin 
    if (FLastSortedColumnIdx = ACol) and (ACol >= 0) and (ARow = -1) then 
    AColor := Columns[ACol].Title.Color; 

    inherited; 
end; 

FLastSortedColumnIdx est le champ où vous avez Column.Index de la colonne triée stockée.

Fonctionne dans Delphi XE3.

+0

Pourquoi devraient-ils? S'il vous plaît expliquer comment cela fonctionne car cela permettra de minimiser la tendance à simplement copier et coller sans comprendre comment le code fonctionne. Le PO devrait être capable de comprendre les ramifications de vos choix et de déterminer si cela convient à leurs objectifs. – rayryeng

+0

Modifié. Désolé de mon erreur. – vnc

+0

+1 - Merci pour l'explication :) – rayryeng