Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Achtung: Dies ist nicht der vollständige Artikel, sondern nur ein paar Seiten davon. Wenn Sie hier nicht erfahren, was Sie wissen möchten, finden Sie am Ende Informationen darüber, wie Sie den ganzen Artikel lesen können.

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

Gedrucktes Heft

Diesen Beitrag finden Sie in Ausgabe 2/2017.

Unser Angebot für Sie!

Lesen Sie diesen Beitrag und 500 andere sofort im Onlinearchiv, und erhalten Sie alle zwei Monate brandheißes Access-Know-how auf 72 gedruckten Seiten! Plus attraktive Präsente, zum Beispiel das bald erscheinende Buch 'Access 2010 - Das Grundlagenbuch für Entwickler'!

Diesen Beitrag twittern

Kombinationsfeld rauf und runter

Kombinationsfelder sind wirklich praktisch, wenn es um die Auswahl von Lookup-Daten geht. Aber immerhin muss man immer noch auf die Schaltfläche zum Aufklappen der Liste klicken, um einen der Einträge auszuwählen. Wir haben uns eine noch schnellere Variante einfallen lassen, bei der Sie einfach nur mit der Maus in das Kombinationsfeld klicken und diese dann nach oben oder unten bewegen müssen, um zwischen den Einträgen zu navigieren. Dieser Beitrag zeigt, wie Sie ein Kombinationsfeld mit dieser Funktion ausstatten.

Beispieldatenbank

Als Beispiel verwenden wir eine Datenbank mit einer einfachen Kundentabelle sowie einem Formular, das die enthaltenen Datensätze per Kombinationsfeld zur Auswahl anbietet (siehe Bild 1). Das Kombinationsfeld heißt cboKunden und verwendet die folgende Abfrage als Datensatzherkunft:

Beispielformular mit dem Kombinationsfeld

Bild 1: Beispielformular mit dem Kombinationsfeld

SELECT tblKunden.KundeID, tblKunden.Firma 
FROM tblKunden ORDER BY tblKunden.Firma;

Damit das Primärschlüsselfeld nicht eingeblendet wird, sondern nur das Feld Firma, stellen Sie die Eigenschaft Spaltenanzahl auf den Wert 2 und die Eigenschaft Spaltenbreiten auf den Wert 0cm ein. Sie können das Kombinationsfeld nun wie gewohnt aufklappen und einen Eintrag auswählen.

Rauf und runter

Wenn der Benutzer das Kombinationsfeld öffnet, findet er dieses in der Regel leer vor (siehe Bild 2). Nun soll der Benutzer mit der Maus auf das Kombinationsfeld klicken und bei gedrückter Maustaste den Mauszeiger nach unten bewegen können, um den ersten Eintrag der Datensatzherkunft auszuwählen. Bewegt er den Mauszeiger bei gedrückter Maustaste weiter nach unten, wird der nächste Eintrag ausgewählt und so weiter. Bewegt er hingegen den Mauszeiger bei gedrückter Maustaste nach oben, wird wieder der vorherige Eintrag ausgewählt. Auf diese Weise kann der Benutzer durch alle vorhandenen Einträge navigieren.

Kombinationsfeld ohne Auswahl

Bild 2: Kombinationsfeld ohne Auswahl

Benötigte Ereignisse

Bevor wir die neue Funktion programmieren, müssen wir uns überlegen, welche Ereignisse wir hier verwenden können. Ganz sicher werden wir das Ereignis Bei Mausbewegung des Kombinationsfeldes benötigen, denn dieses wird ja immer ausgelöst, wenn sich die Maus ein kleines Stückchen bewegt hat.

Gegebenenfalls benötigen wir auch noch die beiden Ereignisse Bei Maustaste ab und Bei Maustaste auf des Kombinationsfeldes, um Vorbereitungen und abschließende Arbeiten für den eigentlichen Vorgang des Ziehens mit der Maus durchzuführen.

Das Ereignis Bei Mausbewegung

Dieses für unsere Lösung existenzielle Ereignis wird alle paar Millisekunden ausgelöst. Es liefert dann mit den folgenden Parametern wichtige Werte:

  • Button: Gibt an, welche Taste der Maus beim Bewegen der Maus gedrückt ist. Es gibt die für uns interessanten Werte 0 (keine Taste), 1 (linke Taste) und 2 (rechte Taste).
  • Shift: Gibt an, ob der Benutzer beim Bewegen der Maus eine der Tasten Umschalt, Strg oder Alt gedrückt hält.
  • X: Liefert die aktuelle X-Position des Mauszeigers.
  • Y: Liefert die aktuelle Y-Position des Mauszeigers.

Die Positionen X und Y werden in 15er-Schritten und in der Größe Twips geliefert. Jeder Bildschirmpunkt hat eine bestimmte Anzahl Twips, wobei diese Anzahl von verschiedenen Faktoren abhängen kann, in der Regel aber 15 beträgt.

Das Ereignis Bei Maustaste ab

Dieses Ereignis wird beim Herunterdrücken der Maustaste ausgelöst. Es liefert die gleichen Parameter wie das Ereignis Bei Mausbewegung.

Programmierung der Funktion

Grundsätzlich sieht die Vorgehensweise wie folgt aus: Wir definieren eine Ereignisprozedur für das Ereignis Bei Mausbewegung. In dieser prüfen wir, ob sich die vertikale Position des Mauszeigers verändert hat und in welchem Umfang. Zusätzlich legen wir fest, nach welcher in der Y-Richtung zurückgelegten Strecke der nächste oder der vorherige Eintrag des Listenfeldes angezeigt werden soll.

Wir könnten die kleinste Einheit wählen, also 15 Twips, aber dann würden wir sehr schnell durch die Einträge rutschen und hätten kaum die Möglichkeit, gezielt einen Eintrag auszuwählen. Also stellen wir die zurückzulegende Strecke etwas größer ein, zum Beispiel auf 150 Twips. Dies legen wir in einer Konstanten namens cIntervall fest, die wir im Kopf des Klassenmoduls des Formulars wie folgt deklarieren:

Const cIntervall As Integer = 150

Um zu prüfen, ob der Mauszeiger seit dem letzten Ändern des ausgewählten Eintrags die in cIntervall angegebene Strecke zurückgelegt hat, müssen wir die Position beim Ändern des Eintrags speichern. Dazu verwenden wir eine weitere Variable, die wir ebenfalls modulweit deklarieren und die wie folgt aussieht:

Dim lngPosVorher As Long

Wir wollen immer nur bis zum letzten Eintrag scrollen, nicht darüber hinaus. Daher deklarieren wir eine Variable, mit der wir die Anzahl der enthaltenen Einträge speichern:

Dim intCount As Integer

Schließlich müssen wir uns auch noch merken, auf welcher Position im Kombinationsfeld wir uns gerade befinden, um von dort auf die vorherige oder nächste Position zu springen. Dazu legen wir noch eine Variable namens intIndex fest:

Sie haben das Ende des frei verfügbaren Teils des Artikels erreicht. Lesen Sie weiter, um zu erfahren, wie Sie den vollständigen Artikel lesen und auf viele hundert weitere Artikel zugreifen können.

Sind Sie Abonnent?Jetzt einloggen ...
 

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

© 2003-2015 André Minhorst Alle Rechte vorbehalten.