![]() |
Feld in Stringgrid färben
Hallo Zusammen,
ich würde gerne ein einzelnes feld in einem grid ab einem bestimmten wert rot färben und wollte fragen ob es möglich ist oder ob ich eine andere komponente brauch und, wenn es möglich ist was ich dazu brauch. Schonmal vielen Dank euer Manu |
Re: Feld in Stringgrid färben
Stichwort OwnerDraw
|
Re: Feld in Stringgrid färben
sorry aber ich hab mich jetzt durch einige threads und die hilfe gelesen doch finde nichts was mir wirklich hilft...
|
Re: Feld in Stringgrid färben
Dann such mal nach
![]() |
Re: Feld in Stringgrid färben
also meine schleife sieht jetzt so aus nur in der zeile wo der wert über 200 ist färbt er die zeile nicht rot was er eigentlich machen sollte ...
Delphi-Quellcode:
wo liegt mein fehler ? ich finde ihn nicht :(
procedure TKndT.StringGrid2DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState); var i : Integer; begin for I := 1 to stringgrid2.rowcount - 1 do begin if StrToFloat(Stringgrid2.Cells[4,i]) >= 200 then begin StringGrid1.Canvas.Brush.Color := clred; StringGrid1.Canvas.FillRect(Rect); end; end; end; schonmal vielen dank |
Re: Feld in Stringgrid färben
Die (Callback)-Methode wird für jede Zelle aufgerufen, es mach deshalb wenig Sinn, jedesmal das ganze Grid zu zeichnen.
Delphi-Quellcode:
procedure TKndT.StringGrid2DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState); var w: Extended; begin if TryStrToFloat( ( sender as TStringGrid).Cells[ ACol, ARow]), w) then if w > 200 then begin ... end; |
Re: Feld in Stringgrid färben
:wiejetzt: was du geschrieben hast passt weder in den quellcode noch verstehe ich was du damit erreichen willst
|
Re: Feld in Stringgrid färben
Warum passt es nicht zum Quellcode? Du hast das Prinzip nicht verstanden: Die Methode wird für jede Zelle aufgerufen; für ein Grid von 4x4 also 16-mal. du zeichnest also 16 mal alles.
|
Re: Feld in Stringgrid färben
also wenn ich das so einfüge
Delphi-Quellcode:
dann bekomme ich die Fehlermeldung das es keine überladene version von TryStrToFloat gibt, die man mit diesen argumenten aufrufen kann ....
procedure TKndT.StringGrid2DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState); var i : Integer; w : extended; begin if TryStrToFloat( ( sender as TStringGrid).Cells[ ACol, ARow]), w) then if w > 200 then begin StringGrid2.Canvas.Brush.Color := clred; StringGrid2.Canvas.FillRect(Rect); end; end; |
Re: Feld in Stringgrid färben
Dann speichern wir halt zwischen:
Delphi-Quellcode:
procedure TKndT.StringGrid2DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState); var i : Integer; w : extended; s : string; begin s := ( sender as TStringGrid).Cells[ ACol, ARow]); if TryStrToFloat( s , w) then if w >= 200 then begin ( sender as TStringGrid).Canvas.Brush.Color := clred; ( sender as TStringGrid).Canvas.FillRect(Rect); end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:40 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