![]() |
FMX: StringGrid - Die Pixel passen nicht
Liste der Anhänge anzeigen (Anzahl: 2)
Ich mache grade meine ersten Gehversuche mit FireMonkey. Ich werfe einen TStringGrid auf ein Formular. Füge zwei Spalten hinzu. Es sieht aus wie im Anhang.
Ich finde nichts, was ich anpassen kann damit die Überschriften-Zeile auch zum Inhalt passt. Wer kann mir helfen?
Delphi-Quellcode:
object StringGrid1: TStringGrid
Position.X = 16.000000000000000000 Position.Y = 8.000000000000000000 Size.Width = 289.000000000000000000 Size.Height = 177.000000000000000000 Size.PlatformDefault = False TabOrder = 0 ReadOnly = True RowCount = 5 RowHeight = 21.000000000000000000 Viewport.Width = 285.000000000000000000 Viewport.Height = 152.000000000000000000 object StringColumn1: TStringColumn Size.Width = 89.000000000000000000 Size.Height = 105.000000000000000000 Size.PlatformDefault = False TabOrder = 0 end object StringColumn2: TStringColumn Header = 'Hallo' Margins.Right = -1.000000000000000000 Position.X = 100.000000000000000000 Size.Width = 99.000000000000000000 Size.Height = 105.000000000000000000 Size.PlatformDefault = False TabOrder = 1 end end |
AW: FMX: StringGrid - Die Pixel passen nicht
Wichtig bei solchen Fragen ist immer, dass Du die benutzte Delphi-Version nennst und auf welchem Betriebssystem du da gerade arbeitest.
Gehe von Delphi 10 Seattle aus und Windows 10. Da wird nämlich standardmäßig der Windows 10 Style eingesetzt, der wohl an dieser Stelle nicht so ganz OK ist. In der FMX-Formular-Datei wirst Du bei den Objekten nichts finden. Denkbar wäre noch an den Styles was zu ändern, da habe ich so auf die Schnelle aber keine funktionierende Einstellmöglichkeit gefunden. Würde daher im ONDrawColumnHeader-Event des StringGrids die Header der Spalten selber zeichnen und entsprechend korrigieren. |
AW: FMX: StringGrid - Die Pixel passen nicht
Der FireMonkey-Spezialist spricht, wer hätte es sonst sein sollen :thumb:
Meine Schuld, ja, selbstverständlich neuste Version "10 Seattle", OS war Windows 10. Auf einem älteren Windows wäre es anders sagst du? Ich könnte mich falsch erinnern, aber ich meine in der Ansicht für Android war der gleiche Fehler. Das "OnDrawColumnHeader"-Event werde ich mir gleich einmal ansehen, Danke! |
AW: FMX: StringGrid - Die Pixel passen nicht
Liste der Anhänge anzeigen (Anzahl: 1)
Ja, auf einem älteren Windows (hier 8.1) sieht es aus, wie in der Anlage (da ist die Trennung mit 2 Linien im Header drin).
|
AW: FMX: StringGrid - Die Pixel passen nicht
Eine ganz dumme Frage: Was muss ich in FMX mit den Draw-Events beachten? Entweder ist es für mich heute schon zu spät, oder es hat keine Auswirkung, was ich in dem Event mache. Ich meine, sollte hier nicht irgendetwas ... blau werden?
Delphi-Quellcode:
Oder muss ich hier noch etwas am StringGrid einstellen?
procedure TForm1.StringGrid1DrawColumnHeader(Sender: TObject;
const Canvas: TCanvas; const Column: TColumn; const Bounds: TRectF); begin Canvas.Fill.Color := TColors.Blue; Canvas.FillRect(Bounds, 10.0, 10.0, [TCorner.TopLeft], 0.5); end; |
AW: FMX: StringGrid - Die Pixel passen nicht
Liste der Anhänge anzeigen (Anzahl: 1)
Hier mal ein kleines Beispiel:
Delphi-Quellcode:
Unter Windows 10 sieht das aus, wie im anliegenden Screenshot. Für Deine Bedürfnisse kannst Du das ja entsprechend anpassen, auch hinsichtlich der Farben. Soll der Header allerdings anklickbar sein, müsstest Du die verschiedenen Verhaltensweisen (Mouse fährt drüber, Klick down) auch noch selber hier zeichnen, würde dann also deutlich komplizierter werden.
procedure TForm18.StringGrid1DrawColumnHeader(Sender: TObject;
const Canvas: TCanvas; const Column: TColumn; const Bounds: TRectF); begin canvas.BeginScene; // Hintergrund leeren bzw. ausfüllen canvas.ClearRect(bounds,TAlphaColorRec.LightGray); // Linienbreite canvas.Stroke.Thickness := 0.2; canvas.Fill.Color := TAlphaColorRec.Silver; if Column.Index >0 then begin // Linie links canvas.DrawLine(PointF (bounds.Left, bounds.Top), PointF (bounds.left, bounds.Bottom), 1); end; canvas.DrawLine(PointF (bounds.Left, bounds.Bottom), PointF (bounds.Right, bounds.Bottom), 1); canvas.Fill.color := TAlphaColorRec.black; canvas.FillText(Bounds, column.Header, false, 1, [], TTextAlign.Center, TTextAlign.Center); canvas.EndScene; end; Wäre evtl. auch sinnvoll, das als Bug zu melden, denn das sieht gerade unter Windows 10 ziemlich bescheiden aus. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:18 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