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;