Hallo,
I-Drizzt-I hat folgendes geschrieben : |
...
Wie ich die x und y koordinaten der Zelle bekomme auf die ich klicke weiß ich schon. |
da hast Du ja schon den ersten Schritt.
Zusätzlich zu Grid.Cells[c,r] gibt es auch Grid.Objects[c,r], in Objects kann man einen Zeiger auf Objekte ablegen, u.A. auch auf einen Farbwert:
Delphi-Quelltext
1: 2: 3: 4:
| Grid.Objects[c,r] := Pointer(clRed); MyColor := Integer(Grid.Objects[c,r]); |
Das Array Objects wird automatisch durch Delphi bei der Initialisierung des Grid mit Pointer(0) belegt, Farbwert 0 ist schwarz. Also mit einer Schleife in OnCreate der Form die Hintergrundfarbe des StringGrid in allen Zellen hinterlegen:
Delphi-Quelltext
1:
| Grid.Objects[c,r] := Pointer(Grid.color); |
Wenn jetzt auf eine Zelle geklickt wird, die Koordinaten hast Du ja, hinterlegst Du in Objects die Farbe. Auch in den anderen Zellen(... 4 waagerecht oder senkrecht).
Nun brauchst Du nur noch im Event-Handler zum Ereignis OnDraw
Cell die Farbe abfragen und entsprechend die jeweilige Zelle ausmalen. Die Variablen ACol, ARow und Rect liefern Dir die erforderlichen Werte.
Delphi-Quelltext
1: 2:
| Grid.Canvas.Brush.Color := Integer(Grid.Objects[ACol,ARow]); Grid.Canvas.FillRect(Rect); |
Das Ereignis OnDrawCell wird automatisch ausgelöst, wenn Objects verändert wird
