Couleur de la sélection d'un TStringGrid

Signaler
Messages postés
207
Date d'inscription
mercredi 5 mars 2003
Statut
Membre
Dernière intervention
29 mars 2013
-
Messages postés
1418
Date d'inscription
samedi 12 juin 2004
Statut
Membre
Dernière intervention
5 juillet 2010
-
Je n'arrive pas à enlever ce bleu de sélection de toutes les cases d'un TStringGrid et ce de façon permanente qqn aurait-il une idée ?

(j'ai Delphi 6 Pro)

SISI231

3 réponses

Messages postés
1418
Date d'inscription
samedi 12 juin 2004
Statut
Membre
Dernière intervention
5 juillet 2010
11
dans l'événement OnDrawCell de ta StringGrid,mets le code suivant :



procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);

begin

if (gdFocused in State) then // Si la cellule est sélectionnée,

begin

StringGrid1.Canvas.FillRect(Rect); // On enlève le bleu de sélection.

//StringGrid1.Canvas.DrawFocusRect(Rect); // Si cette ligne est
décommentée, elle cachera le rectangle de sélection en pointillés en le
redessinant sur lui-même.

end

end;

@+
Bonne Prog'
Nico [www.ni69.new.fr]

N'oubliez pas de cliquer sur Réponse acceptée lorsque la réponse vous convient !
Messages postés
207
Date d'inscription
mercredi 5 mars 2003
Statut
Membre
Dernière intervention
29 mars 2013
5
Ca ne marche pas et ça m'efface parfois le contenu (le string) de la case.

SISI231
Messages postés
1418
Date d'inscription
samedi 12 juin 2004
Statut
Membre
Dernière intervention
5 juillet 2010
11
Désolé, j'avais oublié l'éventualité d'un texte dans la cellule...

Il te suffit de faire comme ceci :



procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);

begin

if (gdFocused in State) then // Si la cellule est sélectionnée,

begin

StringGrid1.Canvas.FillRect(Rect); // On enlève le bleu de sélection.

StringGrid1.Canvas.DrawFocusRect(Rect); // On cache le rectangle de sélection.

StringGrid1.Canvas.Font.Name := 'MS Sans Serif'; // Réglage de la police d'écriture du texte...

StringGrid1.Canvas.Font.Size := 8;

StringGrid1.Canvas.Font.Color := clblack;

StringGrid1.Canvas.TextOut(Rect.Left+2, Rect.Top+2, StringGrid1.Cells[ACol,ARow]); // On écrit le texte dans la cellule.

end

end;


@+
Bonne Prog'
Nico [www.ni69.new.fr]
<hr size ="2" width="100%">
N'oubliez pas de cliquer sur Réponse acceptée lorsque la réponse vous convient !