Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Main.Width und Height (https://www.delphipraxis.net/205310-main-width-und-height.html)

Willie1 25. Aug 2020 17:54

Main.Width und Height
 
Hallo Leute,
ich bin dabei ein altes mit Delphi 2005 erstelltes Programm auf Delphi Berlin um zu stellen. (hat sich sicher herum gesprochen) Ich bin fast fertig. Eines bekomme ich nicht hin, Debuggen bringt mich nicht weiter.
Mein Programm merkt sich beim Beenden MainForm.Width und Height. Beim Starten liest es die Werte aus und stellt das Programm-Fenster auf die gleiche Größe. Falls die Maße nicht da oder fehlerhaft sind, starte das Programm mit den Default-Werten 637x475. Das hat jetzt 12 Jahre geklappt. Unter Delphi Berlin sind Width und Heigth immer 360 und 240 und das Fenster lässt sich nur mit Klick auf den System-Button auf maximale Größe bringen. Was zum Teufel hat sich da geändert, mit Uni-Code kann das doch nicht zu tun haben. Willie.

Dalai 25. Aug 2020 18:11

AW: Main.Width und Height
 
Zitat:

Zitat von Willie1 (Beitrag 1472378)
Beim Starten liest es die Werte aus und stellt das Programm-Fenster auf die gleiche Größe.

Und wann genau, z.B. in welchem Ereignis, passiert das? Es ist durchaus möglich, dass das Setzen der Größe funktioniert, aber durch spätere Ereignisse bzw. VCL-Code wieder rückgängig gemacht wird. Der Debugger in Verbindung mit Breakpoints an den passenden Stellen ist bei Ermittlung sicherlich hilfreich.

Grüße
Dalai

Rolf Frei 25. Aug 2020 18:16

AW: Main.Width und Height
 
Hast du da irgendwelche Werte in Form.Constraints? Was für ein BorderStyle? Ich mache was ähnlches udn da klappt problemlos. Du musst das irgendwie die Maximalgrösse der Form verändet haben.

Übrignesn noch ein Tipp: Speichere die ClientWidth/Height und nciht die Fensterbreitete/Höhe. Je nach Windows hat sonst Clientbereich falsche Dimensionen, je nach dem wie breit die Windowsborder beim aktuellen Windows gerade sind,

Renate Schaaf 25. Aug 2020 18:21

AW: Main.Width und Height
 
Vielleicht hat es mit den in den folgenden links beschriebenen Problemen zu tun:

https://stackoverflow.com/questions/...-to-podef?rq=1

https://stackoverflow.com/questions/...ssigned-values

Um den letzteren bug musste ich auch schon drumrumlavieren.

Jumpy 26. Aug 2020 07:51

AW: Main.Width und Height
 
Zusätzlich zur Größe vielleicht auch den Zustand merken: Minimized/Maximized/...?

Delphi.Narium 26. Aug 2020 10:30

AW: Main.Width und Height
 
Was steht denn in der Eigenschaft Position des Formulars?

Das müsste auf poDesigned stehen, ansonst kann man speichern und lesen, was man will, das wird dann (zumindest bei Delphi 7) kommentarlos ignoriert.

himitsu 26. Aug 2020 11:10

AW: Main.Width und Height
 
Ignoriert wird es nicht wirklich. Diese Position wird im Show neu verechnet und überschreibt es wieder.

Ein Teil der Positionsberechnung ist schon vorm OnCreate (bei Erstellen/Laden der Form) und en Teil kommt erst beim OnShow dran. (leider nicht alles ideal verteilt)

Willie1 26. Aug 2020 16:25

AW: Main.Width und Height
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
im Objekt-Inspektor steht bei MainForm:
Position poScreenCenter
WindowsState wsNormal
Width 637 Height 900
OnCreate-Event lese ich die gespeicherten Werte aus, sonst Default setze MainForm.Width und MainForm.Height. Ich habe sie mit dem Debugger überprüft.
Delphi-Quellcode:
with Config do begin  
    ReadInteger('Width',637,tmpi,true);
    MainForm.Width:=tmpi;
    ReadInteger('Height',475,tmpi,true);
    MainForm.Height:=tmpi;
onShow-Event habe ich WindowState := wsMaximized; hinzu gefügt. Bringt nichts.
Das muss doch einen Unterschied zwischen Delphi 2005 und Delphi Berlin geben. Mit dem alten Compiler übersetzt ist alles in Ordnung. Willie.

Willie1 26. Aug 2020 16:55

AW: Main.Width und Height
 
Hallo Renate,
ich habe es so gemacht:
self.SetBounds(1,1,wi,he); und es klappt. Left und Top spielen keine Rolle, da ich Postion auf poScreenCenter gesetzt habe, nehme ich an!
SetBounds habe ci hier noch nie gesehen oder benutzt.
Danke und Gruß Willie.

himitsu 26. Aug 2020 18:56

AW: Main.Width und Height
 
Genau, rate mal was poScreenCenter macht?
Es überschteibt nach deinem OnShow die Koordinaten.

DEFAULT, aber in der DFM/FormDesigner oder allerspätestens im OnCreate ... die Positionen werden, wenn in der DFM, noch vor OnCreate geladen und können überschrieben werden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:17 Uhr.
Seite 1 von 2  1 2      

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