delphi | stringgrid | zelle |...

L

Logi

hi
also ich bin ja noch ziemlicher anfänger in sachen delphi.

folgende frage hab ich:

wie kann man des bewerkstelligen, dass einzelne zellen eines stringgrids farbig bzw markiert werden? ich hab noch nichts passendes gefunden.

oder wie kann ich es machen, dass der text in einer bestimmten zelle ne andere farbe bekommt?

danke im vorraus...

Logi
 

jaydg

Grünschnabel
Ganz einfach!

Du musst deinerm StingGrid eine Ereignisprozedur OnDrawCell zuweisen, diese kann dann ungefähr so aussehen:

Code:
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
  With (Sender as TStringGrid) do
  begin
    if (gdSelected in State) then
      // hier gibst Du due Farbe für die selektierten Zellen an
      Canvas.Brush.Color:= clGreen
    else if (gdFixed in State) then
   // hier gibst Du due Farbe für die fixen Zellen an
      Canvas.Brush.Color:= clBtnHighlight
    else
      if (ARow Mod 2 = 0) then
      Begin
        // hier gibst Du due Farbe für die Zeilen mit gerader Zeilenzahl an
        canvas.Brush.Color:= clBlue;
        // so kannst Du die Textfarbe einstellen
        Canvas.Font.Color:= clYellow;
      end
      else
        // hier gibst Du due Farbe für die Zeilen mit ungerader Zeilenzahl an
        Canvas.Brush.Color:= clBtnFace;

    Canvas.FillRect(Rect);
    // hier wird der Text gezeichnet
    Canvas.TextOut(Rect.Left + 2, Rect.Top + 2, StringGrid1.Cells[ACol, ARow]);
  end;
end;
 
Zuletzt bearbeitet: