Drop-Down-Menüs in Access-Formularen erstellen

Es funktioniert doch!

Von: Lorenz Hölscher
Stand: 2. Mai 2011
Anmelden um Kommentare zu schreiben

Downloads zu diesem Beitrag

Über den Autor: Lorenz Hölscher

bild80517

Lorenz Hölscher ist freiberuflicher Dozent, Berater und Programmierer mit Schwerpunkt Anwendungs-Programmierung. Vorrangig widmet er sich Access, Word und Excel sowie begleitenden grafischen Arbeiten. Er legt viel Wert auf benutzerfreundliche Oberflächen und ordentliches Design in Optik und Programmierung. Zu Hilfe kommen ihm da seine langjährigen "branchenfremden" Erfahrungen als Architekt, Layouter und Designer.

Lorenz Hölscher bietet eigene Hilfeseiten an und hat bei Microsoft Press mehrere Bücher veröffentlicht zu Access 2007, Access 2007 VBA, Word 2007 VBA und Access 2010.

Beiträge des Autors als Atom-Feed Atom-Feed: Neues von akademie.de

Position ermitteln

Position ermitteln

Da klingt es wie die Rettung, wenn eine API-Funktion GetWindowRect die vier Ecken eines Fensters als Koordinaten in sogar der gewünschten Einheit liefert. Sie müssen der Funktion lediglich das "Fenster-Handle" nennen. Nanu, was ist ein Fenster-Handle?

Ziemlich jedes Objekt in Windows ist ein Fenster und meistens auch einem Eltern-Fenster zugeordnet. Deswegen heißt Windows übrigens auch so. Damit jedes immer eindeutig identifiziert werden kann, erhält es automatisch eine Long-Zahl, eben jenes Fenster-Handle, meist auch als hWnd (handle window) abgekürzt.

So weit die gute Nachricht. Die Einschränkung: es ist doch nicht jedes Objekt ist ein Fenster - auch Schaltflächen nicht.

So kurz vor dem Ziel soll uns das aber nicht abschrecken, denn der Trick besteht nun darin, dass ja nicht die Koordinaten der Schaltfläche abgefragt werden müssen, wenn uns ein anderes Kontroll-Element an gleicher Position diese Daten liefern kann.

Daher liegt neben der Schaltfläche ein Listenfeld namens lstLeer, deren linke obere Ecke an die Schaltfläche grenzt. Dieses Listenfeld ist ein echtes Fenster und liefert daher auch mit der Funktion die gewünschten Koordinaten.

Warum ist die Listbox ein Fenster?

Damit ein Access-Formular in einem Listenfeld (und einem Kombinationsfeld) Daten unabhängig vom Formular anzeigen kann, liegt auf dem Formular ein extra Fenster mit der Liste.

Mittels einer zweiten API-Funktion GetFocus() kann das window handle eines Kontroll-Elements ermittelt werden, welches den Fokus besitzt. Da die Liste den Fokus gerade nicht besitzt, wenn ein Benutzer auf die Schaltfläche klickt, muss der VBA-Code das erledigen.

Diese Seite ist für Mitglieder von akademie.de reserviert.

Möchten Sie die Mitgliedschaft 14 Tage kostenlos testen und den Beitrag komplett lesen?

Ich bin bereits Mitglied
Jetzt Probemitglied werden
Ich kann in den 14 Tagen Probezeit formlos z.B. per E-Mail stornieren. Wenn ich das nicht tue, entscheide ich mich für ein