Delphi 5 StringGrid Felder nach klicken Farbig markieren
also ich habe ein StringGrid mit 10 Spalten und 5 Reihen. Pro spalte soll der Benutzer jeweils durch klicken ein Feld farbig markieren. Ich habe dazu 7 verschieden Farben zur verfügung gestellt.
Ich würde gern das der Beutzter zuerst auf einer der Farben klickt die ich "zur verfügung stellte" und dann auf eine Zelle im StringGrid um diese mit der selben Farbe färben zu können.
wie genau muss ich das machen???
Bitte helft mir ...
1 Antwort
- Jede Zelle des Gitters muss sich in TStringGrid.Objects merken, welche Farbe sie hat. Definiere dazu ein passendes Object.
- Auf Click auf eine Zelle muss diese Eigenschaft entsprechend gesetzt werden.
- Das TStringGrid muss sich selbst zeichnen, also TStringGrid.DefaultDrawing auf False setzen und TStringGrid.OnDrawCell entsprechend selbst schreiben. Als Fabre dabei die gespeicherte Farbe benutzen.
Ich weiß nicht, wie weit Du Delphi beherrscht und Du willst das Programm ja auch sicherlich selbst schreiben. Poste doch schon mal Teillösungen, so dass ich konkreter helfen kann.
StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean)
Immer wenn der User eine Zelle anclickt, wird SelectCell() aufgerufen.
Das Event SelectCell() übergibt die Koordinaten des StringGrids als Spalte und Zeile. Dann musst Du auch nicht mehr umrechenn zwischen Mouse (Client) Koordinaten und StringGrid-Koordinaten.
Machst Du die Ausgabe der Farbe über das DrawCell() Event von TStringGrid?
also ich bin jetzt soweit dass sich das programm die farben alle merkt und die auch asugibt wenn man auf die jeweilige farbe klick, allerdings nur in einem feld welches ich zuvor festgelegt habe..
sprich bräuchte irgendwie dei koordinten der maus.. weiß aber nicht wie ich die erhalte...