Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: Im Stringgrid bestimmte Zellen Markieren (Rahmen/farbe)

  Alt 30. Sep 2006, 19:15
Die Zuweisung von OnDrawCell() kannst du ruhig im Object Inspector vornehmen - und einmal genügt auch. Außerdem kannst du beiden StringGrids die gleiche Routine zuweisen, wenn du eine kleine Änderung machst. Und das Neuzeichnen könnte so funktionieren:

Delphi-Quellcode:
// ...

procedure TForm1.FormCreate(Sender: TObject);
begin
  farbe := clYellow;
end;

procedure TForm1.StringGridDrawCell(Sender: TObject; ACol,
    ARow: Integer; Rect: TRect; State: TGridDrawState);
begin
  if not Odd(ARow) and not (gdFixed in State) then
  // so funktioniert der shared event handler
  with Sender as TStringGrid do
  begin
    Canvas.Brush.Color := farbe;
    Canvas.FillRect(Rect);
    Canvas.TextOut(Rect.Left+2, Rect.Top+2, Cells[ACol, ARow]);
  end;
end;

procedure TForm1.Farbe1Click(Sender: TObject);
begin
  with ColorDialog1 do
    if Execute then
      farbe := Color;
  // Neuzeichnen bei nächster Gelegenheit
  StringGrid1.Invalidate;
  StringGrid2.Invalidate;
end;

end.
Getippt und nicht getestet.

Grüße vom marabu
  Mit Zitat antworten Zitat