vdl_jeremie
Messages postés5Date d'inscriptionjeudi 6 mai 2004StatutMembreDernière intervention15 mai 2004
-
7 mai 2004 à 18:38
vdl_jeremie
Messages postés5Date d'inscriptionjeudi 6 mai 2004StatutMembreDernière intervention15 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)
vdl_jeremie
Messages postés5Date d'inscriptionjeudi 6 mai 2004StatutMembreDernière intervention15 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:
cs_bazole
Messages postés37Date d'inscriptionmardi 25 février 2003StatutMembreDernière intervention13 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);