![]() |
Re: drawgrid: zelle einfärben
Hallo,
Du möchtest, wenn eine Zelle selectiert wird, das diese dann rot eingefärbt wird und die Farbe dann auch bleibt, wenn die Zelle nicht mehr selectiert ist. Habe ich Dich richtig verstanden? Zitat:
Wenn man mehrere Zellen durch Ziehen mit der Maus selectiert, wird für jede der Zellen OnDrawCell ausgelöst, da kann man dann den Boolean-Wert entsprechend setzen. Ein einfaches Beispiel mit einem 5 x 5 Zellen-Grid:
Delphi-Quellcode:
//...
var Form1: TForm1; GridSelArr : Array [0..4,0..4] of Boolean; implementation {$R *.DFM} procedure TForm1.FormCreate(Sender: TObject); var c,r : Integer; begin for c := 0 to 4 do for r := 0 to 4 do GridSelArr[c,r] := False; DrawGrid1.Selection := TGridRect(Rect(-1,-1,-1,-1)); end; procedure TForm1.DrawGrid1DrawCell(Sender: TObject; aCol, aRow: Integer; Rect: TRect; State: TGridDrawState); procedure SetCellRed; begin DrawGrid1.Canvas.Brush.Color := clRed; DrawGrid1.Canvas.FillRect(Rect); end; begin if GridSelArr[aCol,aRow] then SetCellRed else if gdSelected in State then begin GridSelArr[aCol,aRow] := True; SetCellRed; end; end; |
Re: drawgrid: zelle einfärben
jo, danke, funktioniert gut, allerdings möchte ich, dass sobald man eine rot gefärbte zelle selektiert, diese wieder weiß wird.
hbs so versucht, geht aber nicht:
Delphi-Quellcode:
wieso läuft das nicht? nur von rot nach weiß geht nicht, das andere schon! :wall: procedure TForm1.DrawGrid1DrawCell(Sender: TObject; aCol, aRow: Integer; Rect: TRect; State: TGridDrawState); begin drawgrid1.Canvas.Brush.Color:=clred; if feld[acol,arow] then begin drawGrid1.Canvas.FillRect(Rect); feld[acol,arow]:=false; end; if gdselected in state then begin if feld[acol,arow] then begin feld[acol,arow]:=false; drawgrid1.Canvas.Brush.Color:=clwhite; drawgrid1.Canvas.FillRect(rect); end else begin feld[acol,arow]:=true; drawgrid1.Canvas.Brush.Color:=clred; drawgrid1.Canvas.FillRect(rect); end; end; end; thx, mr. pink |
Re: drawgrid: zelle einfärben
Nun ja, schau dir doch mal an, was du für If ... Anweisungen hast. Da dieses Forum etwas eigenes Bemühen vorraussetzt, kann das hier ja ruhig mal gefordert werden.
Ist kein großer Fehler, aber wenn du ihn selbst findest ist das Gelernte um so vorteilhafter für dich. Am leichtesten ist es, wenn du einfach mal dokumentierst, was du genau mit welcher Abfrage testen möchtest und natürlich auch, welchen Status die Felder danach haben. Der Unwissende |
Re: drawgrid: zelle einfärben
omg, klar jetzt hab ichs.
wollt grade schreiben, dass ich immer noch nich weiter weiß und alles, da isses mir aufgefallen, mann, mann, mann... aslo jetzt funktioiert alles, hab
Delphi-Quellcode:
entfernt, und es abreitet endlich wie ichs wollte!
feld[acol,arow]:=false;
danke für deine umfangreichen postings/hilfen Unwissender.. |
Re: drawgrid: zelle einfärben
Ach, nicht dafür!
Freu mich wenn ich mal helfen kann |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:44 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