PhilLu
Messages postés251Date d'inscriptionlundi 9 novembre 2009StatutMembreDernière intervention11 mai 2021
-
21 nov. 2013 à 11:03
solilog
Messages postés273Date d'inscriptionsamedi 13 juin 2009StatutMembreDernière intervention18 avril 2015
-
26 nov. 2013 à 22:00
Bonjour,
pour changer conditionnellement les couleurs de certaines cellules d'un stringgrid ce code fonctionne très bien mais les cellules "cligotent"!?!
Comment résoudre ce problème d'affichage?
Merci pour vos conseils!
PhilLu
for i := 1 to 100 do With SGSample As TStringGrid Do With Canvas Do
Begin
if ((Cells[4,i]='POS') AND (Cells[2,i]='NEG')) OR ((Cells[4,i]='NEG') AND (Cells[2,i]='POS')) then begin cells[5,i]:='1'; Rect := CellRect(4, i); Brush.Color := clRed; Font.Color := clBlack; FillRect(Rect); DrawText(Canvas.Handle, PChar(Cells[4,i]), -1, Rect , DT_CENTER or DT_NOPREFIX or DT_VCENTER or DT_SINGLELINE );
Rect := CellRect(2, i); Brush.Color := clRed; Font.Color := clBlack; FillRect(Rect); DrawText(Canvas.Handle, PChar(Cells[2,i]), -1, Rect , DT_CENTER or DT_NOPREFIX or DT_VCENTER or DT_SINGLELINE ); end; end;
solilog
Messages postés273Date d'inscriptionsamedi 13 juin 2009StatutMembreDernière intervention18 avril 201510 26 nov. 2013 à 22:00
Salut,
Tu n'as pas le droit de modifier une cell d'une grid dans les l'évenement OnDrawCell / on DdrawColCell de la meme grid, ... car
ces even sont appelés quand tu modifies une cell, pour l'afficher selon tes voeux, si elle modifie une autre cell, la proc sera immed appelée par l'autre cell, qui en modifiera peut-etre une autre.
La premiere proc OnDrawCell ne se terminera qu'qprès la fin de tous les autres. Ca peut meme facilement planter planter la pile d'appel des proc.