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"