Bonjour à tous,
J'ai une stringgrid dont je veux que, si on clique sur une ligne, celle-ci change de couleur..., après avoir remis en couleur normale des lignes qui auraient antérieurement changé de couleur par la même manip. Problème classique si l'on en croit le nombre de questions posées à ce sujet sur Internet et dans les forums Delphi.... Mais j'ai lu la faq, Gilles Louise, Leblanc, L'ours des Carpathes et d'autres, piqué des bouts de code un peu partout, souvent après les avoir traduits de Delphi, (que je ne connais pas) et ça fait trois jours que rien ne marche et que j'en suis toujours au même point, à savoir que je ne change que la couleur de la cellule sur laquelle je clique et que toute cellule cliquée prend cette couleur.
J'ai piqué (et transcrit) le code suivant dans un forum delphi, où il est certifié que toute la ligne change de couleur et où la discussion est considérée comme résolue... Et pourtant ça ne marche pas: le résultat est celui que je décris au-dessus.
Nota: RowSelected est un int initialisé dans la fonction GrilleFileSelectCell à la valeur du paramètre ARow transmis à cette dernière
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
23
24
25
26
27
28
29
30
31
32
33
34 void __fastcall TFileWeb::GrilleFileDrawCell(TObject *Sender, int ACol, int ARow, TRect &Rect, TGridDrawState State) { AnsiString ContenuCellule; int x,y; ContenuCellule=GrilleFile->Cells[ACol][ARow]; x=Rect.Left; y=Rect.Top; if((State.Contains(gdFixed))) GrilleFile->Canvas->Brush->Color=clBtnFace; else if((State.Contains(gdSelected))) GrilleFile->Canvas->Brush->Color=clYellow; else GrilleFile->Canvas->Brush->Color=clWhite; GrilleFile->Canvas->FillRect(Rect); if((State.Contains(gdSelected))) GrilleFile->Canvas->Font->Color=clRed; else GrilleFile->Canvas->Font->Color=clBlack; GrilleFile->Canvas->TextOut(x,y,ContenuCellule); if(ARow==RowSelected&&RowSelected!=0) { GrilleFile->Canvas->Brush->Color=clYellow; GrilleFile->Canvas->Font->Color=clRed; GrilleFile->Canvas->TextOut(x,y,ContenuCellule); } }
Est-ce que quelqu'un peut m'expliquer ce qui se passe et ce que je devrais faire ?
Merci d'avance !
Partager