Kontakt
DSVGO
Die Width- und Height-Eigenschaften eines Formulars geben die Größe (äußeren Abmessungen) in Twips zurück, allerdings immer abhängig vom aktuellen WindowState.
Soll nun z.B. beim Beenden der Anwendung die zum "Wiederherstellen" benötigte Formulargröße gespeichert werden, so werden für ein minimiertes Formular viel zu kleine Werte zurück gegeben, für ein maximiertes zu große.
Um an die "echten" Werte zu kommen, müßte man WindowState = vbNormal setze, was aber zu einem deutlich sichtbaren aufflackern des Formulars führt...
Der unten gezeigte Code zeigt eine andere Lösung auf: Es werden zwei neue Formular-Eigenschaften (RealWidth und RealHeight) zur Verfügung gestellt, welche unabhängig vom aktuellen WindowState die gewünschten Werte zurückliefern.
Mit folgendem Code wird beim Schließen eines Formulars die aktuelle "echte" Größe (sowie der atuelle Dartsellungsmodus) in die Registry geschrieben:
Private Sub Form_Unload(Cancel As Integer) SaveSetting App.EXEName, Name, "Width", RealWidth SaveSetting App.EXEName, Name, "Height", RealHeight SaveSetting App.EXEName, Name, "State", WindowState End Sub
Beim nächsten Laden des Formulars können dann diese gespeicherten Werte zum Wiederherstellen der Größe verwendet werden:
Private Sub Form_Load() Width = GetSetting(App.EXEName, Name, "Width", Width) Height = GetSetting(App.EXEName, Name, "Height", Height) WindowState = GetSetting(App.EXEName, Name, "State", WindowState) End Sub
Durch Verwendung Formular-eigener Variablen wird es möglich, bei jedem Resize die zum Wiederherstellen nötigen Werte abzulegen. Auf diese Werte kann dann (nur lesend) via Property-Prozeduren zugegriffen werden:
'Im Deklarationsteil des Formulars: Private pRealHeight As Long Private pRealWidth As Long 'Read-Only Eigenschaften: Public Property Get RealHeight() As Long RealHeight = pRealHeight End Property Public Property Get RealWidth() As Long RealWidth = pRealWidth End Property 'Variablen nur im Normal-Zustand aktualisieren: Private Sub Form_Resize() If WindowState = vbNormal Then pRealHeight = Height pRealWidth = Width End If End Sub
Ebenso könnte auch die Formular-Position (Left- und Top-Eigenschaften) gesichert werden.
© Jost Schwider, 29.05.2002-29.05.2002 - http://vb-tec.de/formmass.htm