|
Das Resize-Ereignis eines Forms ist nicht nur zuständig für die Mitteilung, dass sich die Größe der Form-Fläche geändert hat. Auch bei der Änderung des Anzeigezustandes ("WindowState"), also beim Minimieren, Maximieren und Wiederherstellen wird dieses Ereignis ausgelöst. Ein separates Ereignis hierfür, oder sogar spezifische Ereignisse je nach Anzeigezustand, werden Sie vergeblich suchen. Allerdings wären einzelne "Ereignisse" bzw. dazugehörende Prozeduren wie die folgenden vielleicht ganz praktisch?
Private Sub Form_Resized( _
ByVal WindowState As FormWindowStateConstants, _
ByVal PrevWidth As Single, ByVal PrevHeight As Single, _
ByVal PrevScaleWidth As Single, _
ByVal PrevScaleHeight As Single)
Private Sub Form_Minimized( _
ByVal PrevWindowState As FormWindowStateConstants)
Private Sub Form_Maximized( _
ByVal PrevWindowState As FormWindowStateConstants)
Private Sub Form_Restored(_
ByVal PrevWindowState As FormWindowStateConstants)
Wie gesagt: "Eingebaut" in Visual Basic sind solche Ereignisse nicht. Immerhin können Sie jedoch die Informationen, die im vorhandenen Resize-Ereignis zur Verfügung stehen, auswerten und solche Prozeduren selbst im Form-Code-Modul anlegen und aufrufen. Im Resize-Ereignis selbst bleiben dazu lediglich die jeweiligen Zustände (WindowState, Width, Height, ScaleWidth, ScaleHeight) in statischen Variablen abgelegt, so dass sie die Zeit bis zur nächsten Auslösung des Ereignisses überdauern.
Private Sub Form_Resize()
Static sWindowState As FormWindowStateConstants
Static sWidth As Single
Static sHeight As Single
Static sScaleWidth As Single
Static sScaleHeight As Single
With Me
Select Case .WindowState
Case sWindowState
Select Case True
Case .Width <> sWidth
Case .Height <> sHeight
Case .ScaleWidth <> sScaleWidth
Case .ScaleHeight <> sScaleHeight
Case Else
Exit Sub
End Select
Form_Resized .WindowState, sWidth, sHeight, _
sScaleWidth, sScaleHeight
Case vbMinimized
Form_Minimized sWindowState
Exit Sub
Case vbMaximized
Form_Maximized sWindowState
Form_Resized vbMaximized, sWidth, sHeight, _
sScaleWidth, sScaleHeight
Case vbNormal
Form_Restored sWindowState
Form_Resized vbNormal, sWidth, sHeight, _
sScaleWidth, sScaleHeight
End Select
sWindowState = .WindowState
sWidth = .Width
sHeight = .Height
sScaleWidth = .ScaleWidth
sScaleHeight = .ScaleHeight
End With
End Sub
|