Abstände/Größen ändern sich

Für Fragen rund um die Ide und zum Debugger

Abstände/Größen ändern sich

Beitragvon Adromir » 26. Jul 2018, 11:51 Abstände/Größen ändern sich

Wenn ich mein Projekt auf verschiedenen Rechnern (beide Win10 bei FullHD Auflösung) bearbeite, verändern sich die Abstände/Größe der Elemente. Gibt es da irgendeine Einstellung mit der man das unterbinden kann?
Adromir
 
Beiträge: 37
Registriert: 28. Apr 2018, 03:09

Beitragvon Mathias » 26. Jul 2018, 12:14 Re: Abstände/Größen ändern sich

Gibt es, da dies erst kürzlich eingefügrt wurde.
Nur weis ich nicht wo. :oops:
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 4343
Registriert: 2. Jan 2014, 17:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

Beitragvon wp_xyz » 26. Jul 2018, 12:44 Re: Abstände/Größen ändern sich

Im Idealfall verwendest du Lazarus > 1.8, dann musst du dich um Skalierung der Formulare bei unterschiedlichen Pixels-per-Inch nicht mehr kümmern, wenn in den Projekt-Optionen "Manifest-Resource verwenden" markiert ist und darunter als "DPI-Bewusstsein" (welch scheußliche Übersetzung!) etwas anderes als "aus (False)" gewählt ist. Mit diesen Einstellungen werden alle Dimensionen so umgerechnet, dass die Verhältnisse beibehalten werden. Wenn du Icons in ImageListen verwendest, dann übernimmt die IDE von Lazarus-Trunk auch deren Skalierung, wenn ImageList.Scaled=true gesetzt ist.
wp_xyz
 
Beiträge: 2890
Registriert: 8. Apr 2011, 08:01

Beitragvon Adromir » 26. Jul 2018, 14:37 Re: Abstände/Größen ändern sich

Ah okay. Das DPI Bewusstsein habe ich sogar ausgeschaltet, da ich vermutet hatte, dass das der schuldige ist
Adromir
 
Beiträge: 37
Registriert: 28. Apr 2018, 03:09

Beitragvon BeniBela » 26. Jul 2018, 20:52 Re: Abstände/Größen ändern sich

Was macht denn die Use LCL Scaling Option darüber? Und was ist der Unterschied zwischen den drei möglichen DPI Bewusstseins?

Betrifft das nur Windows? Unter Linux kann man die Schriftgröße auch ohne DPI Änderung ändern.

Ich mache das ganz anders:

Bei allen Komponenten AutoSize aktivieren und dann Align/Anchors entsprechend setzen, so dass sich alles an die Schrift anpasst.


Nur habe ich noch nicht ganz rausgefunden wie man macht, dass Autosize es nur vergrößern und nicht im Normalzustand verkleinert und alle Ränder abschneidet
BeniBela
 
Beiträge: 259
Registriert: 21. Mär 2009, 17:31
OS, Lazarus, FPC: Linux (Lazarus SVN, FPC 2.4) | 
CPU-Target: 64 Bit
Nach oben

Beitragvon wp_xyz » 26. Jul 2018, 21:58 Re: Abstände/Größen ändern sich

BeniBela hat geschrieben:Was macht denn die Use LCL Scaling Option darüber?

Natürlich! Das habe ich übersehen, und dabei ist es das wichtigste (es ist einfach zu heiß...). Also: Wenn man diese Checkbox setzt, wird in die Projektdatei "Application.Scaled := true" geschrieben, und alle Dimensionen werden entsprechend den DPI des Monitors skaliert. Je nach DPI-"Bewusstsein" wird - nur für Windows - die entsprechende Manifest-Datei verwendet, wobei man ab Win 8.1 auch unterscheiden kann, ob bei mehreren Monitoren die DPI pro Monitor ausgewertet werden - d.h. wenn man ein Fenster von einem 96dpi-Monitor auf einen 144dpi-Monitor schiebt, wird die Pixelzahl auf letzterem so hochgerechnet, dass sich die Größe nicht ändert. Hab' ich selbst nicht getestet, wurde mir aber von Ondrej Pokorny, der all dies geschrieben hat, auf eine entsprechende Anfrage bestätigt.
wp_xyz
 
Beiträge: 2890
Registriert: 8. Apr 2011, 08:01

Beitragvon BeniBela » 28. Jul 2018, 19:19 Re: Abstände/Größen ändern sich

Ich habe jetzt das in meinem OnCreate:

Code: Alles auswählen
 
const REFERENCE_FONT = 19;
var
  fontHeight, i: Integer;
  bounds, oldbounds: TRect;
begin
  guiScaleFactor := 1;
  fontHeight := Canvas.GetTextHeight('Hm,.|');
 
  if fontHeight > REFERENCE_FONT then begin
    guiScaleFactor := fontHeight / REFERENCE_FONT;
    oldbounds := BoundsRect;
    bounds := oldbounds;
    bounds.Width := MulDiv(bounds.Width, fontHeight, REFERENCE_FONT);
    bounds.Height := MulDiv(bounds.Height, fontHeight, REFERENCE_FONT);
 
    if bounds.Width > screen.Width then bounds.Width := screen.Width;
    if bounds.Height > screen.Height then bounds.Height := screen.Height;
    if (bounds.width = oldbounds.Width) and (bounds.height = oldbounds.Height) then exit;
 
    if bounds.Left + bounds.Width > screen.Width then bounds.Left := screen.Width - bounds.Width;
    if bounds.Top + bounds.Height > screen.Height then bounds.Top := screen.Height - bounds.Height;
 
    BoundsRect := bounds;
  end;                 
end;
 



Aber kann man canvas überhaupt in OnCreate verwenden? Das bringt alles durcheinander: https://bugs.freepascal.org/view.php?id=34044

Woher kriege ich die System-Schriftgröße?
BeniBela
 
Beiträge: 259
Registriert: 21. Mär 2009, 17:31
OS, Lazarus, FPC: Linux (Lazarus SVN, FPC 2.4) | 
CPU-Target: 64 Bit
Nach oben

Beitragvon wp_xyz » 28. Jul 2018, 23:19 Re: Abstände/Größen ändern sich

Wenn ich mich jetzt recht erinnere, berechnet Ondrej den Skalierungsfaktor aus den DesigntimePPI des Formulars und den PixelsPerInch des Fonts des Formulars.
wp_xyz
 
Beiträge: 2890
Registriert: 8. Apr 2011, 08:01

Beitragvon BeniBela » 28. Jul 2018, 23:26 Re: Abstände/Größen ändern sich

Ich will ja aber die Schriftgröße und nicht DPI.

Hier unter Linux hat die Standardschrift 19 Pixel hoch und unter Windows 15 Pixel, bei derselben DPI

Und in der ~/.gtkrc-2.0 kann man die Schrift ändern. Dann ist die Schrift doppelt so groß, aber die DPI ändert sich nicht
BeniBela
 
Beiträge: 259
Registriert: 21. Mär 2009, 17:31
OS, Lazarus, FPC: Linux (Lazarus SVN, FPC 2.4) | 
CPU-Target: 64 Bit
Nach oben

Beitragvon wp_xyz » 29. Jul 2018, 12:18 Re: Abstände/Größen ändern sich

BeniBela hat geschrieben:Woher kriege ich die System-Schriftgröße?

Screen.SystemFont ?
wp_xyz
 
Beiträge: 2890
Registriert: 8. Apr 2011, 08:01

Beitragvon BeniBela » 29. Jul 2018, 16:13 Re: Abstände/Größen ändern sich

Das hat immer Größe 0
BeniBela
 
Beiträge: 259
Registriert: 21. Mär 2009, 17:31
OS, Lazarus, FPC: Linux (Lazarus SVN, FPC 2.4) | 
CPU-Target: 64 Bit
Nach oben

• Themenende •

Zurück zu Benutzung der IDE



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste

porpoises-institution
accuracy-worried