Hallo,
ich hatte mal so was ähnliches gemacht (war aber ein StringGrid)
(ich schalte zwar nur zwischen zwei Farben um, aber das Prinzip sollte sichtbar sein)
Im MouseDown hab ich die Farbe selektiert und als Object in die Zelle geschrieben
Delphi-Quellcode:
procedure TForm3.StringGridMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
ACol : Integer;
ARow : Integer;
Farbe : TColor;
begin
StringGrid.MouseToCell(X, Y, ACol, ARow);
Farbe := Integer(StringGrid.Objects[ACol, ARow]);
If Farbe = SelectColor then
Farbe := StandardColor
else
Farbe := SelectColor;
StringGrid.Objects[ACol, ARow] := Pointer(Farbe);
end;
und in DrawCell der Zelle zugewiesen
Delphi-Quellcode:
procedure TForm3.StringGridDrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
If gdFixed in State then
exit;
Rect.Left := Rect.Left - 4;
StringGrid.Canvas.Brush.Color := Integer(StringGrid.Objects[aCol, ARow]);
StringGrid.Canvas.FillRect(Rect);
end;
mfg
Helmi
>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<