AGB  ·  Datenschutz  ·  Impressum  







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

TStringGrid Größe ermitteln

Ein Thema von BigAl · begonnen am 26. Aug 2020 · letzter Beitrag vom 27. Aug 2020
Antwort Antwort
BigAl

Registriert seit: 6. Sep 2008
Ort: Kehl
515 Beiträge
 
Delphi 12 Athens
 
#1

AW: TStringGrid Größe ermitteln

  Alt 27. Aug 2020, 06:30
Es ist besser statt der 2 Pixel die Höhe der Trennlinie korrekt aus GridLineWidth abzuleiten. Bei mir ist das

(DefaultRowHeight + GridLineWidth) * RowCount + GridLineWidth

Die Trennline muss pro Zeile nur einmal berücksichtigt werden. Nur bei der letzen (bzw. der ersten) Zeile muss die Trennlinie noch einmal berücksichtigt werden.
Ja, bei mir steht es mittlerweile so im Quelltext (gekürzt):

Delphi-Quellcode:
var
  GridHeight: Integer;
begin
  GridHeight := Grid.GridLineWidth + (Grid.DefaultRowHeight + Grid.GridLineWidth) * Grid.RowCount;
  if Grid.AlignWithMargins then
   GridHeight := GridHeight + Grid.Margins.Top + Grid.Margins.Bottom;
  Panel.ClientHeight := GridHeight;
  ...
Das haut auch einigermaßen hin. Sind halt an die 30 Grids die ich so verwalten muss (in verschiedenen Formularen) und ich suche eine "stabile" Lösung. Muss das aber auf verschiedenen Zielgeräten prüfen, da heutzutage ein Pixel ja nicht immer gleich ein Pixel ist. Die Kunden stehen leider immer mehr auf ihre 4K und noch höher auflösenden Monitore und stellen da dann Skalierungen von 200% und mehr ein...
Man sollte nie so viel zu tun haben, dass man zum Nachdenken keine Zeit mehr hat. (G.C. Lichtenberg)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.751 Beiträge
 
Delphi 12 Athens
 
#2

AW: TStringGrid Größe ermitteln

  Alt 27. Aug 2020, 08:00
So lange es runde Skalierungen sind, passt es noch, ansonsten stimmt das nicht mehr.

Beim FMX mit den Float-Positionen lässt sich das teilweise ausgleichen, aber in der VCL macht es dann Spaß.

Es kommt aber auch drauf an wer skaliert.
Wenn Windows skalieren würde und intern es noch die 100%-Pixel sind, dann hast du bei Berechnungen garkeine Probleme, aber es sieht eventuell auch blöd aus.

Wenn es unbedingt Pixelgenau sein muß, dann kannst du ein bissl mit den Einstellungen rumspielen.
HighDPI im Manifest und Form.Scaled und selbst skalieren rumspielen.
Ein Therapeut entspricht 1024 Gigapeut.
  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 16:15 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