AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

FMX: StringGrid - Die Pixel passen nicht

Ein Thema von Der schöne Günther · begonnen am 5. Apr 2016 · letzter Beitrag vom 5. Apr 2016
Antwort Antwort
Der schöne Günther

Registriert seit: 6. Mär 2013
6.110 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

FMX: StringGrid - Die Pixel passen nicht

  Alt 5. Apr 2016, 08:21
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
Miniaturansicht angehängter Grafiken
fmx_stringgrid_1.png   fmx_stringgrid_2.png  
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.479 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: FMX: StringGrid - Die Pixel passen nicht

  Alt 5. Apr 2016, 16:46
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.

Geändert von Harry Stahl ( 5. Apr 2016 um 16:50 Uhr)
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.110 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: FMX: StringGrid - Die Pixel passen nicht

  Alt 5. Apr 2016, 19:07
Der FireMonkey-Spezialist spricht, wer hätte es sonst sein sollen

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!
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.479 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: FMX: StringGrid - Die Pixel passen nicht

  Alt 5. Apr 2016, 19:33
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).
Miniaturansicht angehängter Grafiken
grid2.jpg  
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.110 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: FMX: StringGrid - Die Pixel passen nicht

  Alt 5. Apr 2016, 20:46
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:
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;
Oder muss ich hier noch etwas am StringGrid einstellen?
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.479 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: FMX: StringGrid - Die Pixel passen nicht

  Alt 5. Apr 2016, 22:22
Hier mal ein kleines Beispiel:

Delphi-Quellcode:
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;
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.

Wäre evtl. auch sinnvoll, das als Bug zu melden, denn das sieht gerade unter Windows 10 ziemlich bescheiden aus.
Miniaturansicht angehängter Grafiken
grid3.jpg  
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:55 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz