Cellule d'un stringgrid ou drawgrid qui disparaît

vdl_jeremie Messages postés 5 Date d'inscription jeudi 6 mai 2004 Statut Membre Dernière intervention 15 mai 2004 - 7 mai 2004 à 18:38
vdl_jeremie Messages postés 5 Date d'inscription jeudi 6 mai 2004 Statut Membre Dernière intervention 15 mai 2004 - 9 mai 2004 à 01:57
Bonjour,

je vous expose mon problème. Si je diminuer la fenêtre de l'exécutable ou que j'ouvre une autre fenêtre devant, les cellules que j'avais coloré ont disparu. Une bonne âme pourrait-elle me renseigner sur le moyen de "bloquer/figer" les couleurs.

Pour plus de précision, la propriété color de mon stringrid est mis à clwindow.Qd j'exécute mon programme, mon programme lit des coordonnées (x,y) dans un fichier txt. Ces coordonnées sont mises dans une liste(les x) de listes(les y) = matrice creuse pour ceux qui connaissent. A chacune de ces coordonnées mon code afecte une autre couleur(clred).Qd je diminue la fenêtre pendant l'exécution, les cellules colorées en rouge(clred) ont disparu et redevienne blanche(clwindow).

Merci d'avance pour votre aide. Si qqun me trouve la réponse sur le forum, je n'aurai plus qu'à changer mes verres de lunettes lol :big)

3 réponses

vdl_jeremie Messages postés 5 Date d'inscription jeudi 6 mai 2004 Statut Membre Dernière intervention 15 mai 2004
7 mai 2004 à 23:18
alors en fait dans ce source soit les colonnes et lignes fixes sont colorés ou alors ce sont toutes les cellules mobiles qui prennet la couleur de font du stringrid.Donc ce source ne me convient pas car ce que je souhaite faire ce serait de colorer certaines cellules et en garder la couleur car si j'utilise ce bout de code:

rect:=strgrid.CellRect(x,y);
stringgrid.Canvas.Brush.Color:=clGradientActiveCaption;
Stringgrid.Canvas.FillRect(rect);

la cellule se trouvant en x,y sera coloré mais si je diminue la fenêtre et que je l'agrandit par après ma cellule en x,y ne sera plus colorée.

alors je me suis demandé s'il y avait moyen de fixé une cellule et pas toute une colonne ou ligne????
0
cs_bazole Messages postés 37 Date d'inscription mardi 25 février 2003 Statut Membre Dernière intervention 13 novembre 2005
8 mai 2004 à 17:33
Bonjour

Je ne pense pas qu'il soit possible de fixer une couleur sur une cellule d'un StringGrid.
En fait il faut redéssiner les cellules d'un StrinGrid grâce à son évènement "OnDrawCell".

En décortiquant le source de Hnimsgern, on se rend compte qu'il redéssine chaque cellule, la couleur de chaque cellule étant intégrée dans un tableau à 2 dimensions.

Sur une fiche, installe un StringGrid en laissant son nom par défaut, ensuite dans lévènement OnDrawCell met le code ci-dessous.

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
var
Gridcolor:array[1..4] of Array[1..4] of Tcolor;
texte: string;
Rect1: TRect;
begin
GridColor[3,3] := clGradientActiveCaption;
texte := StringGrid1.Cells[3,3];
Rect1:= StringGrid1.CellRect(3,3);
StringGrid1.Canvas.Brush.Color := GridColor[3,3];
StringGrid1.Canvas.FillRect(rect1);
StringGrid1.Canvas.TextRect(Rect1, Rect1.Left+2, Rect1.Top+2, texte);

GridColor[2,2] := clRed;
texte := StringGrid1.Cells[2,2];
Rect1:= StringGrid1.CellRect(2,2);
StringGrid1.Canvas.Brush.Color := GridColor[2,2];
StringGrid1.Canvas.FillRect(rect1);
StringGrid1.Canvas.TextRect(Rect1, Rect1.Left+2, Rect1.Top+2, texte);
end;

Bazole
0
vdl_jeremie Messages postés 5 Date d'inscription jeudi 6 mai 2004 Statut Membre Dernière intervention 15 mai 2004
9 mai 2004 à 01:57
ok merci je v essayer ça ;-)
0
Rejoignez-nous