Formularpositionen merken und wiederherstellen

Die Hilfsfunktionen

Neben den API-Funktionen benötigen Sie noch weitere Hilfsfunktionen. Die Funktion Verschieben verschiebt das Formularfenster und ändert gegebenenfalls seine Größe. Sie ruft nichts weiter als die API-Funktion GetWindowsRect auf, um den Bereich des Access-Fensters zu ermitteln, und übergibt dann die Parameter der Funktion mit korrigierter oberer Position des Access-Fensters an die Funktion MoveWindows.

An die Funktion Verschieben übergeben Sie neben der Position des Fensters und dessen Größe auch das Formular als Form-Objekt. Darüber hinaus benötigen Sie zur Ermittlung der linken und oberen Position des Fensters und zu dessen Größe je eine Funktion. Die Funktionen links, oben, breite und hoehe tun dabei nichts weiter, als die GetWindowRect-Funktion aufzurufen und den entsprechenden Wert aus der Struktur zurückzugeben.

Damit haben Sie den gesamten Code erstellt, um die notwendigen Daten zu ermitteln und zu verschieben. Möchten Sie aber ein Fenster immer an der Stelle öffnen, an der es zuletzt geöffnet war, und auch dessen Größe wieder herstellen, müssen Sie natürlich auch die ermittelten Daten speichern. Dazu eignet sich die Registry. Am einfachsten nutzen Sie die SaveSetting-Anweisung und die GetSetting-Funktion, um die Daten zu speichern und zu lesen. Den eigentlichen Lese- und Schreibvorgang übernehmen dann die Prozeduren speichern und laden. Beiden übergeben Sie das Formular als Parameter. Die Prozedur speichern ermittelt dann Position und Größe des Formulars und speichert diese in der Registry unter einem Schlüssel, der dem Namen des Formulars entspricht. Beim Lesen der Daten in der Prozedur laden wird zunächst nur die Breite gelesen. Falls dafür der Wert 0 aus der Registry zurückgegeben wird, wurden noch keine Daten für das Formular gespeichert. In diesem Fall sollten die Daten natürlich nicht zugewiesen werden, weil sonst das Formular bei einer Größe von 0 nicht sichtbar wäre.

Daher werden die anderen Daten nur dann ermittelt, wenn die Breite ungleich 0 ist, und auch nur dann wird die Funktion Verschieben aufgerufen.