Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Feld in Stringgrid färben (https://www.delphipraxis.net/112103-feld-stringgrid-faerben.html)

5etH 15. Apr 2008 08:55


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

mkinzler 15. Apr 2008 09:00

Re: Feld in Stringgrid färben
 
Stichwort OwnerDraw

5etH 15. Apr 2008 09:36

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...

DeddyH 15. Apr 2008 09:39

Re: Feld in Stringgrid färben
 
Dann such mal nach Hier im Forum suchenDrawColumnCell

5etH 15. Apr 2008 10:23

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:
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;
wo liegt mein fehler ? ich finde ihn nicht :(

schonmal vielen dank

mkinzler 15. Apr 2008 10:31

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;

5etH 15. Apr 2008 10:44

Re: Feld in Stringgrid färben
 
:wiejetzt: was du geschrieben hast passt weder in den quellcode noch verstehe ich was du damit erreichen willst

mkinzler 15. Apr 2008 10:51

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.

5etH 15. Apr 2008 11:03

Re: Feld in Stringgrid färben
 
also wenn ich das so einfüge

Delphi-Quellcode:
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;
dann bekomme ich die Fehlermeldung das es keine überladene version von TryStrToFloat gibt, die man mit diesen argumenten aufrufen kann ....

mkinzler 15. Apr 2008 11:20

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.
Seite 1 von 3  1 23      

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