Windows XP et Delphi 4 standard.
Bonjour à tous,
Sur ma fiche j'ai 4 TStringGrid et un TButton.
Je voulais qu'une seule ligne d'une seule TStringGrid soit séléctionnée (donc en bleu) et non une ligne de chaque TStringGrid comme cela vient normalement. Sur les aimables et compétentes indications d'un membre expert de ce forum dont j'ai oublié l'identité j'ai donc ajouté à chaque TStringGrid une procédure OnDrawCell comme indiqué ci-dessous. Ca marche impeccablement mais lorsque je clique sur le TButton le fond bleu de la cellule sélectionnée disparait et passe en blanc alors que je voudrais qu'il reste en bleu. Il me parait clair que cela est provoqué par le fait qu'en cliquant sur le TButton la TStringGrid n'est plus focalisée ce qui fait passer la couleur de fond en blanc.
Merci d'avance à qui pourra m'aider.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 procedure ComptaWGestion2Fich.SgDosPrDrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); begin with Sender as TStringGrid do with Canvas do begin // sélection de la couleur de fond if SGDosPr.Focused then if gdFixed in State then Brush.Color :=clBtnFace else if gdSelected in State then Brush.Color :=clBlue else Brush.Color:=clWhite else if gdFixed in State then Brush.Color :=clBtnFace else Brush.Color:=clWhite; // Dessin du fond FillRect(Rect); // Sélection de la couleur d'écriture if Brush.Color=clBlue then Font.Color:=clWhite else Font.Color:=clBlack; // Dessin du texte TextOut(Rect.Left,Rect.Top,Cells[ACol,ARow]); end; end;
Partager