![]() |
StringGrid nicht neuzeichnen
Hallo,
hab in nem kleinen Tool n Stringgrid, wo einzelne Zellen eine bestimmte Schriftfarbe bekommen, wenn eine Bedingung erfüllt ist. Leider zeichnet er das Grid dauernd neu und somit frisst der meist 80% mein CPU-Leistung. Jetzt hab ich versucht mit
Delphi-Quellcode:
das neuzeichnen zu verhindern, allerdings klappt das nicht wie gewünscht,sondern die Farben erscheinen nur nicht mehr.
StringGrid1.OnDrawCell:=nil;
Wie kann ich dem Prog verbieten und erlauben, das Grid neuzuzeichnen, und zwar wenn ich das will? |
Re: StringGrid nicht neuzeichnen
wie sieht denn dein code bisher aus? Im Ondracell darfst du keine Zelltext neu setzen, sonst wirds wieder aufgerufen.
Mfg Frank |
Re: StringGrid nicht neuzeichnen
Delphi-Quellcode:
Eigentlich setze ich nur die Textfarbe oder?
procedure StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState); var payback,i,multip:integer; begin if RadioButton1.Checked then multip:=1 else multip:=2; If (ACol>=3) and (ACol<11) then begin try payback:=StrToInt(StringGrid1.Cells[ACol+1,ARow]); except payback:=0; end; If payback>=150*multip then begin StringGrid1.Font.Color := clgreen; // StringGrid1.Canvas.FillRect(Rect); end else if (payback<150*multip) and (payback>=120*multip) then begin StringGrid1.Font.Color := clolive; // StringGrid1.Canvas.FillRect(Rect); end else if (payback<120*multip) and (payback>=90*multip) then begin StringGrid1.Font.Color := clred; // StringGrid1.Canvas.FillRect(Rect); end else StringGrid1.Font.Color:=clBlack; end else StringGrid1.Font.Color:=clblack; If (Acol=12) and (arow=20) then StringGrid1.OnDrawCell:=nil; //Versuch, dass neuzeichnen zu verbieten end; Der Versuch der Unterbindung (Kommentar im Code) wird beim Buttonklick dann wieder erlaubt:
Delphi-Quellcode:
StringGrid1.OnDrawCell:=StringGrid1DrawCell;
|
Re: StringGrid nicht neuzeichnen
Moin Sushibb,
das hat zwar leider nichts mit Deinem Problem zu tun: Mach mal aus
Delphi-Quellcode:
lieber
try
payback:=StrToInt(StringGrid1.Cells[ACol+1,ARow]); except payback:=0; end;
Delphi-Quellcode:
payback:=StrToIntDef(StringGrid1.Cells[ACol+1,ARow],0);
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:10 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz