Einzelnen Beitrag anzeigen

Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#2

AW: Zelle in DrawGrid dauerhaft einfärben

  Alt 30. Mär 2016, 07:45
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! <<
  Mit Zitat antworten Zitat