Programm Skalierung Probleme
-
- Beiträge: 285
- Registriert: Mi 20. Feb 2013, 10:30
- OS, Lazarus, FPC: Win (L 2.2.4 FPC 3.2.2)
- CPU-Target: 32/64,ARM(RPi)
Programm Skalierung Probleme
Hallo Forum,
es tauchen Skalier Probleme in Window10 auf.
Mit Laz 1.6 hat es Funktioniert, seit dem Umstieg auf 2.0.10 gibt es Probleme.
Beschreibung:
Bei den Einstellwerten die Windows vorgibt, (125,150,175,200) gibt es keine Probleme.
Werden aber Benutzerdefinierte Skalierungen eingegeben, z.B. (110,115% usw.), werden die Inhalte der Formen zerschossen.
In Lazarus Projekteinstellungen ist LCL-Skalierung Aktiviert.
Ich arbeite auf 115%.
Mit Laz 1.6 werden die Programmformen in der IDE korrekt angezeigt.
In Laz 2.0.10 sind sie in der Laz Umgebung schon Fehlerhaft.
Was kann oder muss man sonst noch wo einstellen?
Für Infos wäre ich Dankbar.
Gruß
es tauchen Skalier Probleme in Window10 auf.
Mit Laz 1.6 hat es Funktioniert, seit dem Umstieg auf 2.0.10 gibt es Probleme.
Beschreibung:
Bei den Einstellwerten die Windows vorgibt, (125,150,175,200) gibt es keine Probleme.
Werden aber Benutzerdefinierte Skalierungen eingegeben, z.B. (110,115% usw.), werden die Inhalte der Formen zerschossen.
In Lazarus Projekteinstellungen ist LCL-Skalierung Aktiviert.
Ich arbeite auf 115%.
Mit Laz 1.6 werden die Programmformen in der IDE korrekt angezeigt.
In Laz 2.0.10 sind sie in der Laz Umgebung schon Fehlerhaft.
Was kann oder muss man sonst noch wo einstellen?
Für Infos wäre ich Dankbar.
Gruß
Re: Programm Skalierung Probleme
Was heißt denn "zerschossen", was ist "fehlerhaft"?
-
- Beiträge: 285
- Registriert: Mi 20. Feb 2013, 10:30
- OS, Lazarus, FPC: Win (L 2.2.4 FPC 3.2.2)
- CPU-Target: 32/64,ARM(RPi)
Re: Programm Skalierung Probleme
Stringgrid, edit, Panels vergrößern sich und verändern die Position.
Button und Label verschwinden außerhalb der Form.
Button und Label verschwinden außerhalb der Form.
Re: Programm Skalierung Probleme
Ich hab mir jetzt extra Laz 1.6.4 installiert, damit ein kleines Test-Projekt gemacht (ein einfaches Formular mit Buttons an den Bildschirmecken, dann die Auflösung meines Win10 auf 110% gestellt, und nach dem obligatorischen Ab-/Anmelden diese Projekt in Laz 2.0.10 geladen, übersetzt und gestartet. Kein Problem. Weder ohne, noch mit aktivem LCL-Scaling.
Was machst du genau?
Was machst du genau?
-
- Beiträge: 285
- Registriert: Mi 20. Feb 2013, 10:30
- OS, Lazarus, FPC: Win (L 2.2.4 FPC 3.2.2)
- CPU-Target: 32/64,ARM(RPi)
Re: Programm Skalierung Probleme
Hallo, danke für die Info.
Nun habe ich festgestellt, dass es daran liegt, das Laz 2.0.10 schon die Form beim Aufruf der IDE Skaliert.
Soll heißen, ein Programm, erstellt mit Laz 1.6 z.B. Formgröße Wide 900, Height 700 behält stetig seine Größe
von Height und Wide Einstellungen, egal in welcher Skalierung.
2.0.10 verändert die Form Wide und Height schon beim Aufruf je nach Skalierung und vergrößert die Form mit Inhalt dementsprechend.
So müssen halt mehr Anpassungen für 2.0.10 gemacht werden.
Nun habe ich festgestellt, dass es daran liegt, das Laz 2.0.10 schon die Form beim Aufruf der IDE Skaliert.
Soll heißen, ein Programm, erstellt mit Laz 1.6 z.B. Formgröße Wide 900, Height 700 behält stetig seine Größe
von Height und Wide Einstellungen, egal in welcher Skalierung.
2.0.10 verändert die Form Wide und Height schon beim Aufruf je nach Skalierung und vergrößert die Form mit Inhalt dementsprechend.
So müssen halt mehr Anpassungen für 2.0.10 gemacht werden.
Re: Programm Skalierung Probleme
Laz 1.6 war die letzte Version, bevor LCLScaling eingeführt worden ist. Bei LCL-Scaling wird die Formular-Eigenschaft DesignTimePPI eingeführt, das ist quasi die "Einheit" für die Dimension im Forumular. Wenn du unter Laz 1.8+ (also auch 2.0.10) ein Formular unter 100% (96ppi) designst und dann unter 150% (144ppi) weiterbearbeitest, wird es beim Laden ins 150%-System umskaliert. Das funktioniert alles.
Ich nehme nun mal an, du hast auf demselben Rechner, der auf - sagen wir - 150% (144ppi) läuft, ein Projekt mit Laz 1.6 geschrieben, dann Lazarus auf 2.0.10 aufgerüstet, und lädst nun zum ersten Mal das Projekt in Laz 2.0.10.
Unter Laz 1.6 gab es noch kein DesigntimePPI. Das neue Laz 2.0.10 findet die "Einheit" DesignTimePPI nicht und nimmt daher an, das Formular wäre unter 100% erzeugt worden. Da dein Rechner aber eine höhere Auflösung hat, rechnet es alle Längen auf die aktuellen PPI um - das Formular und alles darauf wird um 50% größer. Ich kann mir jetzt zwar nicht vorstellen, dass damit Controls abgeschnitten werden, aber was weiß ich, was auf dem Formular wie verankert oder aligned oder constrained ist, oder was auch immer..
Es gibt zwei Lösungen zu dem Problem: Zunächst stelle die ursprüngliche Version des Projekts vor dem ersten Laden in 2.0.10 wieder her. Denn 2.0.10 könnte schon die Dimensionen verändert ins lfm geschrieben haben.
(1) Starte Laz 2.0.10, Rechtsklick auf dem Leerformular des Default-Projekts > "Einstellungen" > "Formulareditor". Ganz unten ist "Force DPI scaling in design-time" - Häkchen entfernen. Nun werden die nachfolgend geladenen Formulare nicht mehr umskaliert.
Lade dein Projekt. Verschiebe jedes formular um ein paar Pixel und speichere es. Dadurch wird der Wert von DesigntimePPI in die LFM-Datei geschrieben (denn deine aktuelle Bildschirmauflösung ist ja nicht 96ppi).
Stelle sicher, dass in "Projektoptionen" > "Anwendung" die Option "LCL-Skalierung verwenden" markiert ist. Es sollte auch "DPI-Anpassung" auf "an (True)" gesetzt werden.
Wiederhole das für alle Projekte, die du in 2.0.10 weiterbearbeiten willst.
Stelle das Häkchen bei "Force DPI scaling in designtime" wieder her.
Zur Sicherheit Lazarus neu starten
Wenn du jetzt das Projekt neu lädst, sollte es die richtige Größe behalten.
(2) Öffne jede .lfm-Datei in einem externen Editor und füge über "LCLVersion" die Zeile " DesignTimePPI = 144" wobei "144" gegen den bei deinem System vorhandenen PPI-Wert ausgetauscht werden muss. Zur Sicherheit, Leerzeichen und Einrückung beibehalten, ich habe keine Erfahrung wie pingelig hier das Streaming-System ist.
Da bei Laz 2.0.10 LCLScaling die Default-Einstellung ist, musst du wahrscheinlich an der lpr-Datei keine Änderung vornehmen.
Öffne das Projekt in Laz 2.0.10, es sollte alles stimmen.
Nach dieser Operation kannst du das Formular nicht mehr in Laz 1.6 laden, da die Eigenschaft DesignTimePPI dort nicht bekannt ist.
Ich nehme nun mal an, du hast auf demselben Rechner, der auf - sagen wir - 150% (144ppi) läuft, ein Projekt mit Laz 1.6 geschrieben, dann Lazarus auf 2.0.10 aufgerüstet, und lädst nun zum ersten Mal das Projekt in Laz 2.0.10.
Unter Laz 1.6 gab es noch kein DesigntimePPI. Das neue Laz 2.0.10 findet die "Einheit" DesignTimePPI nicht und nimmt daher an, das Formular wäre unter 100% erzeugt worden. Da dein Rechner aber eine höhere Auflösung hat, rechnet es alle Längen auf die aktuellen PPI um - das Formular und alles darauf wird um 50% größer. Ich kann mir jetzt zwar nicht vorstellen, dass damit Controls abgeschnitten werden, aber was weiß ich, was auf dem Formular wie verankert oder aligned oder constrained ist, oder was auch immer..
Es gibt zwei Lösungen zu dem Problem: Zunächst stelle die ursprüngliche Version des Projekts vor dem ersten Laden in 2.0.10 wieder her. Denn 2.0.10 könnte schon die Dimensionen verändert ins lfm geschrieben haben.
(1) Starte Laz 2.0.10, Rechtsklick auf dem Leerformular des Default-Projekts > "Einstellungen" > "Formulareditor". Ganz unten ist "Force DPI scaling in design-time" - Häkchen entfernen. Nun werden die nachfolgend geladenen Formulare nicht mehr umskaliert.
Lade dein Projekt. Verschiebe jedes formular um ein paar Pixel und speichere es. Dadurch wird der Wert von DesigntimePPI in die LFM-Datei geschrieben (denn deine aktuelle Bildschirmauflösung ist ja nicht 96ppi).
Stelle sicher, dass in "Projektoptionen" > "Anwendung" die Option "LCL-Skalierung verwenden" markiert ist. Es sollte auch "DPI-Anpassung" auf "an (True)" gesetzt werden.
Wiederhole das für alle Projekte, die du in 2.0.10 weiterbearbeiten willst.
Stelle das Häkchen bei "Force DPI scaling in designtime" wieder her.
Zur Sicherheit Lazarus neu starten
Wenn du jetzt das Projekt neu lädst, sollte es die richtige Größe behalten.
(2) Öffne jede .lfm-Datei in einem externen Editor und füge über "LCLVersion" die Zeile " DesignTimePPI = 144" wobei "144" gegen den bei deinem System vorhandenen PPI-Wert ausgetauscht werden muss. Zur Sicherheit, Leerzeichen und Einrückung beibehalten, ich habe keine Erfahrung wie pingelig hier das Streaming-System ist.
Da bei Laz 2.0.10 LCLScaling die Default-Einstellung ist, musst du wahrscheinlich an der lpr-Datei keine Änderung vornehmen.
Öffne das Projekt in Laz 2.0.10, es sollte alles stimmen.
Nach dieser Operation kannst du das Formular nicht mehr in Laz 1.6 laden, da die Eigenschaft DesignTimePPI dort nicht bekannt ist.
-
- Beiträge: 285
- Registriert: Mi 20. Feb 2013, 10:30
- OS, Lazarus, FPC: Win (L 2.2.4 FPC 3.2.2)
- CPU-Target: 32/64,ARM(RPi)
Re: Programm Skalierung Probleme
Hallo, danke für die Information.
"Force DPI scaling in design-time", das hatte ich gesucht.
Leider kann ich das mit der Skalierung nicht benutzen.
Stelle ich "DPI-Anpassung" auf "(True)", dann Funktioniert die bild.png Transparenz in einem TImage nicht mehr.
Aber das macht nichts, denn in meiner komplizierten Form wo im unteren Viertel sich ein TPageControl mit TPanels in jedem TAB und Komponenten befinden,
verschieben diese sich ineinander bei einer Skalierung.
Aufbau:
Normale Form, im unteren Viertel ein PageControl, daneben ein TImage das nur bei vergrößern der Form oder Vollbild sichtbar wird.
Über dem Pagecontrol ein DBGrid welches sich bei Formveränderung dem Rest anpasst.
Also wächst das PageControl bei einer Skalierung, müsste folglich auch das TImage daneben sich anpassen.
PageControl und daneben ein TPanel mit TImage geht auch irgendwie nicht.
Aber egal.
Mit einer Festen Größe habe ich keine Probleme.
Ob das mit dem TImage ein Lazfehler ist kann ich nicht beurteilen.
Nochmals Danke.
"Force DPI scaling in design-time", das hatte ich gesucht.
Leider kann ich das mit der Skalierung nicht benutzen.
Stelle ich "DPI-Anpassung" auf "(True)", dann Funktioniert die bild.png Transparenz in einem TImage nicht mehr.
Aber das macht nichts, denn in meiner komplizierten Form wo im unteren Viertel sich ein TPageControl mit TPanels in jedem TAB und Komponenten befinden,
verschieben diese sich ineinander bei einer Skalierung.
Aufbau:
Normale Form, im unteren Viertel ein PageControl, daneben ein TImage das nur bei vergrößern der Form oder Vollbild sichtbar wird.
Über dem Pagecontrol ein DBGrid welches sich bei Formveränderung dem Rest anpasst.
Also wächst das PageControl bei einer Skalierung, müsste folglich auch das TImage daneben sich anpassen.
PageControl und daneben ein TPanel mit TImage geht auch irgendwie nicht.
Aber egal.
Mit einer Festen Größe habe ich keine Probleme.
Ob das mit dem TImage ein Lazfehler ist kann ich nicht beurteilen.
Nochmals Danke.
-
- Beiträge: 845
- Registriert: Sa 12. Sep 2015, 12:10
- OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
- CPU-Target: Win 32/64, Linux64
- Wohnort: Wien
Re: Programm Skalierung Probleme
meinst du so etwas wie das beigefügte Projekt?
Das lässt sich leicht auch noch mit Splittern auffetten dann kann der Benutzer sein Fenster selber einstellen.
Laz 2.0.11 (Laz 2 fixies) FPC 3.2.1 (FPC 3.2 fixies) mit fpcupdeluxe installiert.
Das lässt sich leicht auch noch mit Splittern auffetten dann kann der Benutzer sein Fenster selber einstellen.
Laz 2.0.11 (Laz 2 fixies) FPC 3.2.1 (FPC 3.2 fixies) mit fpcupdeluxe installiert.
- Dateianhänge
-
- project1.zip
- (125.42 KiB) 134-mal heruntergeladen
-
- Beiträge: 285
- Registriert: Mi 20. Feb 2013, 10:30
- OS, Lazarus, FPC: Win (L 2.2.4 FPC 3.2.2)
- CPU-Target: 32/64,ARM(RPi)
Re: Programm Skalierung Probleme
Ja so in etwa,
habe mal die ungefähre Struktur aufgebaut.
Gruß
habe mal die ungefähre Struktur aufgebaut.
Gruß
-
- Beiträge: 845
- Registriert: Sa 12. Sep 2015, 12:10
- OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
- CPU-Target: Win 32/64, Linux64
- Wohnort: Wien
Re: Programm Skalierung Probleme
da scheinst du recht zu haben dass die Farbe des Pagecontrol1 verschwindet.
Aber einiges kommt mir trotzdem seltsam vor.
obwohl du mit
die Farbe änderst passiert das offensichtlich nicht.
Allerdings finde ich auch nirgends wo du die Farbe des unteren Pagecontrols (PageControl3) bzw/oder des darauf liegenden Panel3 auf blau stellst?
Das Resizing und die Skalierung klappt bei mir ohne Probleme.
An sich hat IMHO ein TPageControl gar keine Hintergrundfarbe, was immer wieder ein Wunsch war aber nie umgesetzt wurde (vermutlich Kompatibilitätsgründe). Es existiert ja gar kein Property dafür in der IDE.
Aber einiges kommt mir trotzdem seltsam vor.
obwohl du mit
Code: Alles auswählen
procedure TForm1.FormCreate(Sender: TObject);
begin
PageControl1.Color:= clSkyBlue;
end;
die Farbe änderst passiert das offensichtlich nicht.
Allerdings finde ich auch nirgends wo du die Farbe des unteren Pagecontrols (PageControl3) bzw/oder des darauf liegenden Panel3 auf blau stellst?
Das Resizing und die Skalierung klappt bei mir ohne Probleme.
An sich hat IMHO ein TPageControl gar keine Hintergrundfarbe, was immer wieder ein Wunsch war aber nie umgesetzt wurde (vermutlich Kompatibilitätsgründe). Es existiert ja gar kein Property dafür in der IDE.
-
- Beiträge: 285
- Registriert: Mi 20. Feb 2013, 10:30
- OS, Lazarus, FPC: Win (L 2.2.4 FPC 3.2.2)
- CPU-Target: 32/64,ARM(RPi)
Re: Programm Skalierung Probleme
Die Hintergrundfarbe für die Transparenten tImage sind ja auch im
PairSplitter1.Color "clGradientInactiveCaption" gesetzt.
PageControl1.Color := clSkyBlue; setzt ja auch nur die Statuszeile vom PageControl1 in Farbe.
PairSplitter1.Color "clGradientInactiveCaption" gesetzt.
PageControl1.Color := clSkyBlue; setzt ja auch nur die Statuszeile vom PageControl1 in Farbe.
-
- Beiträge: 8
- Registriert: Di 23. Mai 2023, 18:47
- OS, Lazarus, FPC: Win 10, Lazarus 2.2.6, FPC 3.2.2, i386-win32-win32/win64
- CPU-Target: 64 Bit
Re: Programm Skalierung Probleme
Habe den Faden über die Suche gefunden und hänge meine Frage mal dran.
Hallo, ich würde gerne wissen ob diese Anleitung noch gültig ist, für diese Versison:
Lazarus 2.2.6 FPC 3.2.2 i386-win32-win32/win64
Ich habe auf dem Laptop mit folgenden Windows 10 Einstellungen gearbeitet:
Skalierung 125% bei 1920x1080 Pixeln.
Dann habe ich das Projekt auf meinen Büro Rechner kopiert (gleiche Lazarus Umgebung). Dort arbeite ich mit 100% bei 1920x1080 Pixeln.
Nach dem ersten Start sah das Hauptfester OK aus, nur alle aufgerufenen Unterformulare hatten Probleme mit der Darstellung, in StringGrids kann die vierte, „versteckte“ Spalte sehen und der Scrollbalken war außerhalb des definierten Fensters, die Höhe stimmt auch nicht mehr. Die eingebunden Images wurde doppelt so groß und waren teilweise nicht mehr zu sehen, da vom Stringgrid überdeckt. Habe versuch nach der o.g. Anleitung zu verfahren, dies hat alles nur schlimmer gemacht.
Aktuelle Einstellungen in Laz auf dem Laptop mit den 125%:
Main Form und anderen Formulare Prop:
DesignTimePPI: 96
PixelPerInch: 96
Was dort vor meinen Experiment drin stand habe ich nicht geprüft, jetzt ist hier alles zerschossen, ein Backup ist vorhanden!
Ich würde gern wie früher arbeiten: Ich lege alles über Pixel fest, Breiten, Höhen, Schriftgrößen u.s.w. Wenn der Nutzer an der Skalierung von Windows dreht, dann sollte das Programm in der Lage sein und sich selbst anpassen können. Sollte doch möglich sein.
Hallo, ich würde gerne wissen ob diese Anleitung noch gültig ist, für diese Versison:
Lazarus 2.2.6 FPC 3.2.2 i386-win32-win32/win64
Ich habe auf dem Laptop mit folgenden Windows 10 Einstellungen gearbeitet:
Skalierung 125% bei 1920x1080 Pixeln.
Dann habe ich das Projekt auf meinen Büro Rechner kopiert (gleiche Lazarus Umgebung). Dort arbeite ich mit 100% bei 1920x1080 Pixeln.
Nach dem ersten Start sah das Hauptfester OK aus, nur alle aufgerufenen Unterformulare hatten Probleme mit der Darstellung, in StringGrids kann die vierte, „versteckte“ Spalte sehen und der Scrollbalken war außerhalb des definierten Fensters, die Höhe stimmt auch nicht mehr. Die eingebunden Images wurde doppelt so groß und waren teilweise nicht mehr zu sehen, da vom Stringgrid überdeckt. Habe versuch nach der o.g. Anleitung zu verfahren, dies hat alles nur schlimmer gemacht.
Aktuelle Einstellungen in Laz auf dem Laptop mit den 125%:
Main Form und anderen Formulare Prop:
DesignTimePPI: 96
PixelPerInch: 96
Was dort vor meinen Experiment drin stand habe ich nicht geprüft, jetzt ist hier alles zerschossen, ein Backup ist vorhanden!
Ich würde gern wie früher arbeiten: Ich lege alles über Pixel fest, Breiten, Höhen, Schriftgrößen u.s.w. Wenn der Nutzer an der Skalierung von Windows dreht, dann sollte das Programm in der Lage sein und sich selbst anpassen können. Sollte doch möglich sein.
- Dateianhänge
-
- 2.png (163.25 KiB) 4787 mal betrachtet
-
- 1.png (69.69 KiB) 4787 mal betrachtet