Einzelnen Beitrag anzeigen

Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#14

Re: Stringgrid Zelle unterschiedlich färben

  Alt 27. Dez 2005, 13:53
Hai (b)engelchen.

Ich glaube Du hast auch nicht richtig gelesen. Er möchte ja in einer Zelle mehr als eine Farbe.

Hier mal ein Demo für eine zweifarbige Zelle (horizontal geteilt):
Delphi-Quellcode:
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: integer;
  Rect: TRect; State: TGridDrawState);
var
  celltext: string;
  myDrawRect: TRect;
  rowHeight: integer;
begin
  with (Sender as TStringGrid) do
  begin
    celltext := Cells[ACol, ARow];
    myDrawRect := Rect;
    SetBkMode(StringGrid1.Canvas.Handle,OPAQUE);
    if (ARow = 2) and (ACol > 0) then // Hier ist es zweifarbig
    begin
      Canvas.Brush.Color := clRed;
      rowHeight := RowHeights[ARow];
      myDrawRect.Bottom := myDrawRect.Bottom - (rowHeight div 2);
      Canvas.FillRect(myDrawRect); // Hintergrund für die obere Hälfe zeichnen

      Canvas.Brush.Color := clBlue;
      myDrawRect.Bottom := Rect.Bottom;
      myDrawRect.Top := myDrawRect.Top + (rowHeight div 2);
      Canvas.FillRect(myDrawRect); // Hintergrund für die untere Hälfe zeichnen
      SetBkMode(StringGrid1.Canvas.Handle, TRANSPARENT); // Den Hintergrund nich überschreiben
    end;
    if (ARow = 3) then // Einfarbige Zeilen
    begin
      Canvas.Brush.Color := clGreen;
      Canvas.FillRect(Rect);
    end;
    DrawText(Canvas.Handle, PChar(celltext), Length(celltext),Rect, DT_SINGLELINE);
  end;
end;
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat