![]() |
TStringGrid zellen färben
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
ich habe ein TStringGrid bei dem jeder 2. Col eingefärbt wird. Das funktioniert auch sehr gut. Aber wenn ich mir das anschaue, dann ist der Anfang der Zelle immer noch weiß. Die Zelle ist nicht komplett eingefärbt. Hat jemand eine Idee dazu? ich hab jetzt schon Stunden damit verbracht. Ist wahrscheinlich eine simple Sache aber ich finds nicht..... hab noch einen Screenshot angefügt |
AW: TStringGrid zellen färben
Poste doch mal den Code, welchen Du im OnDrawCell nutzt...
...:cat:... |
AW: TStringGrid zellen färben
Wie sieht Dein Code aus?
|
AW: TStringGrid zellen färben
Das ist der Code den ich benutzt habe:
Delphi-Quellcode:
procedure Tm_settings.tab_visu_settingsDrawCell(Sender: TObject; ACol,
ARow: Integer; Rect: TRect; State: TGridDrawState); var gr : TStringGrid; begin gr := (Sender as TStringGrid); if not odd(aCol) and not (gdFixed in State) then begin gr.Canvas.Brush.Color := TColor($D9D9C0); gr.Canvas.FillRect(Rect); gr.Canvas.TextOut(Rect.Left + 3, Rect.Top + 4, gr.Cells[ACol, ARow]); end; if (ARow = 5) then begin gr.Canvas.Brush.Color := TColor($FFCC99); gr.Canvas.FillRect(Rect); gr.Canvas.TextOut(Rect.Left + 2, Rect.Top + 2, gr.Cells[ACol, ARow]); end; end; |
AW: TStringGrid zellen färben
Laut Referenz füllt FillRect den rechten und unteren Rand nicht, aber er scheint den linken und oberen Rand nicht zu Zeichnen. Zeichne mal den Rand mit.
|
AW: TStringGrid zellen färben
Naja, die weißen Striche sind halt die vom Grid gemachten Abstände zwischen den Zellen.
Schau beim Grid im Objektinspektor bei den Options, ob Du da durch Änderungen etwas an der Optik in Deinem Sinne bewegen kannst. |
AW: TStringGrid zellen färben
Setze mal den Pen.Style auf psNone (oder psClear? ) und Pen.Width auf 0...
...:cat:... |
AW: TStringGrid zellen färben
Ich hab jetzt mal pen.Style und Pen.Width probiert. Das hat leider nicht geholfen.
Der Ansatz von Markus ist gut. Wenn man nur ...Canvas.Frame.Rect(Rect) nimmt, dann sieht man das das Rectangle kleiner als das eigentliche Feld ist. Und es hängt wohl mit dem Texteinzug zusammen. Setze ich im Objectinspektor BiDiMode auf RightToLeft dann fehlt etwas an der rechten Seite. Hmm wird noch eine lange Nacht denke ich. |
AW: TStringGrid zellen färben
Liste der Anhänge anzeigen (Anzahl: 1)
je später der Abend umso einfacher die Lösung...grins.
Dank dem Ansatz von Markus und vielen vielen Lösungsversuchen habe ich es hin bekommen. ob das so die schönste und eleganteste Lösung weiß ich nicht. Aber es geht. man verschiebt einfach vor dem FillRect den Rect.Left nach links und schon füllt er weiter aus..... Danke nochmals für eure Hilfe. Hier nochmal der Code:
Delphi-Quellcode:
Und noch einen finalen Screenshot:
procedure Tm_settings.tab_visu_settingsDrawCell(Sender: TObject; ACol,
ARow: Integer; Rect: TRect; State: TGridDrawState); var gr : TStringGrid; begin gr := (Sender as TStringGrid); if not odd(aCol) and not (gdFixed in State) then begin gr.Canvas.Brush.Color := TColor($D9D9C0); Rect.Left := Rect.Left - 4; gr.Canvas.FillRect(Rect); gr.Canvas.TextOut(Rect.Left + 3, Rect.Top + 4, gr.Cells[ACol, ARow]); end; if (ARow = 5) then begin gr.Canvas.Brush.Color := TColor($FFCC99); Rect.Left := Rect.Left - 5; gr.Canvas.FillRect(Rect); gr.Canvas.TextOut(Rect.Left + 2, Rect.Top + 2, gr.Cells[ACol, ARow]); end; end; |
AW: TStringGrid zellen färben
Hmm..
Hab das mal bei mir nachgebaut:
Delphi-Quellcode:
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState); begin if not odd(aCol) and not (gdFixed in State) then TStringGrid(Sender).Canvas.Brush.Color := TColor($D9D9C0); if (ARow = 5) then TStringGrid(Sender).Canvas.Brush.Color := TColor($FFCC99); TStringGrid(Sender).Canvas.TextRect(Rect, Rect.Left+2, Rect.Top+2, TStringGrid(Sender).Cells[ACol, ARow]); end; Das macht bei mir, dass was Du willst... das Canvas.TextRect( habe ich übringens direkt aus dem Default DrawCell genommen... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:44 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz