![]() |
canvas.fillrect(rect); funktioniert nicht.
Moin!
Man sieht ja öfters hier im Forum, dass jemand gern wissen würde, wie man eine bestimmte Zelle eines Stringgrids einfärbt. Dabei kommt dann oft sowas hier raus:
Delphi-Quellcode:
Aus irgendeinem Grund funktioniert der oben auskommentierte Befehl nicht. Ich bekomme so eine Fehlermeldung:
var matrix : array [0..17,0..7] of boolean;
procedure TForm1.stringgrid1SelectCell(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean); begin if matrix[acol,arow] = false then matrix[acol,arow] := true else matrix[acol,arow] := false; end; procedure TForm1.stringgrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); begin case matrix[acol,arow] of false: stringgrid1.Canvas.brush.color:= clblack; true : stringgrid1.Canvas.brush.color:= clred; end; stringgrid1.Canvas.fillrect(rect); //genau das funktioniert bei mir nicht end; Es gibt keine überladene Version von 'Rect', die man mit diesen Argumenten aufrufen kann. mfg... |
Re: canvas.fillrect(rect); funktioniert nicht.
Delphi-Quellcode:
var matrix : array [0..17,0..7] of boolean;
procedure TForm1.stringgrid1SelectCell(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean); begin //besser matrix[acol,arow] := not matrix[acol,arow]; end; procedure TForm1.stringgrid1DrawCell(Sender: TObject; ACol, ARow: Integer; ARect: TRect; State: TGridDrawState); begin //besser if matrix[acol,arow] then Stringgrid1.Canvas.brush.color:= clred else stringgrid1.Canvas.brush.color:= clblack; stringgrid1.Canvas.fillrect(Arect); //genau das sollte jetzt klappen end; |
Re: canvas.fillrect(rect); funktioniert nicht.
hi und guten morgen,
danke für die antwort, aber wie rufe ich diese procedures jetzt auf? mfg, anarkids :dance: |
Re: canvas.fillrect(rect); funktioniert nicht.
Im OI doppelt in das Ereignis klicken, Delphi erstellt den Prozedurrumpf selber und wenn OwnerDraw auf true steht wird sie automatisch aufgerufen, wenn das Grid neugezeichnet werden muss.
|
Re: canvas.fillrect(rect); funktioniert nicht.
danke für die schnelle antwort Lucky!
Nun bekomme ich allerdings eine Exception. |
Re: canvas.fillrect(rect); funktioniert nicht.
Wer ist Lucky?
Zitat:
|
Re: canvas.fillrect(rect); funktioniert nicht.
:? Glaskugel kaputt :? Welche :?:
|
Re: canvas.fillrect(rect); funktioniert nicht.
okai sorry.
Im Projekt Monit.exe ist eine Exception der Klasse EReadError mit der Meldung 'Ungültiger Eigenschaftswert' aufgetreten. *grummel* Hab alles so übernommen, wie's mir vorgeschlagen wurde :) |
Re: canvas.fillrect(rect); funktioniert nicht.
in welcher Zeile :?:
|
Re: canvas.fillrect(rect); funktioniert nicht.
also direkt bei der Benachrichtigung über die Debugger-Exception steht nix von ner Zeile.
Wenn ich auf Anhalten klicke, dann wird Zeile 14 von Monit.exe markiert: Application.Run; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:12 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 by Thomas Breitkreuz