AutoComplete schnell zu Textfeld hinzufügen

Im Beitrag „AutoComplete in Textfeldern“ in der vorherigen Ausgabe von Access im Unternehmen haben wir eine Lösung vorgestellt, mit der Sie Textfelder um eine AutoComplete-Funktion erweitern können. Dort haben wir uns die grundlegenden Techniken angesehen, im vorliegenden Beitrag kümmern wir uns darum, dieses Tool in eine Form zu bringen, die wir einfach und schnell einem Textfeld hinzufügen können. Und das, ohne den Code für jedes Textfeld erneut in die Klassenmodule der Formulare kopieren zu müssen.

Autocomplete-Klasse

Wenn wir eine nützliche Funktion herauskristallisiert haben, nutzen wir in der Regel ein Klassenmodul, um den entstandenen Code zusammenzufassen und diesen wiederverwendbar zu machen, ohne dass er jedes Mal in die jeweiligen Module hineinkopiert werden muss. Das Klassenmodul muss dann ein paar private Variablen bieten, die über öffentliche Eigenschaften gefüllt oder gelesen werden können und welche die Informationen für den Ablauf der Funktion bereitstellen.

Also erstellen wir zunächst ein neues Klassenmodul namens clsAutoComplete.

Für die Umsetzung der AutoComplete-Funktion in der Klasse benötigen wir drei Informationen:

  • Einen Verweis auf das Textfeld, welches wir mit der AutoComplete-Funktion ausstatten wollen,
  • den Namen der Tabelle, aus der die Daten für AutoComplete stammen und
  • den Namen des Feldes, welches diese Daten enthält.

Dafür fügen wir der Klasse zunächst die folgenden privat deklarierten Variablen hinzu:

Private WithEvents m_Textbox As TextBox
Private m_Table As String
Private m_Field As String

Die Objektvariable m_Textbox versehen wir mit dem Schlüsselwort WithEvents. Damit legen wir die Grundlage dafür, dass wir innerhalb des Klassenmoduls auch Ereignisprozeduren für das Textfeld implementieren können.

öffentliche Eigenschaften

Damit wir etwa bei öffnen des Formulars mit dem auszustattenden Textfeld die notwendigen Informationen an das neu erstellte Objekt auf Basis dieser Klasse übermitteln können, benötigen wir drei entsprechende öffentliche Eigenschaften. Diese bilden wir mit Property Set– beziehungsweise Property Let-Prozeduren ab. Erstere sind für Objektvariablen geeignet, zweitere für einfache Variablen wie Text- oder Zahlenfelder. Die Tabelle und das Feld erfassen wir mit solchen Property Let-Prozeduren:

Public Property Let Table(str As String)
     m_Table = str
End Property
Public Property Let Field(str As String)
     m_Field = str
End Property

Die Property Set-Prozedur für die Eigenschaft TextBox hat noch eine zusätzliche Anweisung:

Public Property Set TextBox(txt As TextBox)
     Set m_Textbox = txt
     With m_Textbox
         .OnKeyPress = "[Event Procedure]"
     End With
End Property

Die Zuweisung des Wertes [Event Procedure] zur Eigenschaft OnKeyPress teilt dem Klassenmodul mit, dass es nach einer Implementierung des Ereignisses KeyPress für das Textfeld aus m_Textbox suchen soll, wenn der Benutzer dieses Ereignis auslöst.

Durch diese Vorbereitung finden Sie im linken Kombinationsfeld des Codefensters für das Klassenmodul clsAutoComplete den Eintrag m_TextBox. Haben Sie diesen ausgewählt, erscheint automatisch die Ereignisprozedur m_Textbox_BeforeUpdate – das ist die Standardereignisprozedur für diesen Steuerelementtyp. Wir benötigen aber das Ereignis KeyPress, das wir danach im rechten Kombinationsfeld auswählen (siehe Bild 1). Unten sehen Sie die danach erscheinende Ereignisprozedur.

Hinzufügen der Ereignisprozedur für das Ereignis KeyPress

Möchten Sie weiterlesen? Dann lösen Sie Ihr Ticket!
Hier geht es zur Bestellung des Jahresabonnements des Magazins Access im Unternehmen:
Zur Bestellung ...
Danach greifen Sie sofort auf alle rund 1.000 Artikel unseres Angebots zu - auch auf diesen hier!
Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:

Schreibe einen Kommentar