Formular- und Datenbankeinstellungen speichern und wiederherstellen

Formulareigenschaften speichern und wiederherstellen

Auch die Eigenschaften von Formularen, wie Größe und Position der Formulare, können Sie in der Registry speichern. Der Einfachheit halber dient der Name des Formulars als Name des Schlüssels.

Die Position und Größe des Fensters ermitteln Sie über die Eigenschaft WindowWidth, Window Height, WindowTop und WindowLeft (Listing 3).

Sub FormularSpeichern(objForm As Form)
SaveSetting appName, objForm.Name, "Hoehe", objForm.WindowHeight
SaveSetting appName, objForm.Name, "Breite", objForm.WindowWidth
SaveSetting appName, objForm.Name, "Oben", objForm.WindowTop
SaveSetting appName, objForm.Name, "Links", objForm.WindowLeft
End Sub

Wenn Sie die gespeicherten Eigenschaften aus der Registry auslesen, können Sie diese aber nicht direkt den Eigenschaften zuweisen, weil sie schreibgeschützt sind. Stattdessen müssen Sie die gespeicherten Werte in Variablen speichern, die Sie dann an die Move-Methode des Formulars übergeben (Listing 4).

Sub FormularLaden(objForm As Form)
Dim lngBreite As Long
Dim lngHoehe As Long
Dim lngOben As Long
Dim lngLinks As Long
lngHoehe = GetSetting(appName, objForm.Name, _
"Hoehe", objForm.WindowHeight)
lngBreite = GetSetting(appName, objForm.Name, _
"Breite", objForm.WindowWidth)
lngOben = GetSetting(appName, objForm.Name, _
"Oben", objForm.WindowTop)
lngLinks = GetSetting(appName, objForm.Name, _
"Links", objForm.WindowLeft)
objForm.Move lngLinks, lngOben, lngBreite, lngHoehe
End Sub

Damit Formularposition und -größe auch für jedes einzelne Formular gespeichert werden, müssen Sie die Prozeduren natürlich noch aufrufen. Dazu müssen Sie in jedem Formular je eine Ereignisprozedur für das Load-Ereignis und das Unload-Ereignis erstellen (Listing 5).

Private Sub Form_Load()
FormularLaden Me
End Sub
Private Sub Form_Unload(Cancel As Integer)
FormularSpeichern Me
End Sub