Stringgrid drawcell clignote???

PhilLu Messages postés 251 Date d'inscription lundi 9 novembre 2009 Statut Membre Dernière intervention 11 mai 2021 - 21 nov. 2013 à 11:03
solilog Messages postés 273 Date d'inscription samedi 13 juin 2009 Statut Membre Dernière intervention 18 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

procedure TForm1.SGSampleDrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin

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;

end;
Bonjour,

1 réponse

solilog Messages postés 273 Date d'inscription samedi 13 juin 2009 Statut Membre Dernière intervention 18 avril 2015 10
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.

Salut
solilog
0
Rejoignez-nous