BEISPIEL
HINWEIS
Damit haben Sie ein voll funktionstüchtiges Formular erzeugt, ohne eine einzige Zeile Quellcode oder eine
Eigenschaft editiert zu haben.
Steuerelemente-Assistenten (Beispiel)
Nicht ohne Grund kommen wir erst zum Schluss zu den Steuerelemente-Assistenten, ist doch deren Pro-
grammierung etwas komplexer als in den bisherigen Beispielen. Der Eintrittsprozedur werden diesmal zwei
Werte übergeben, der Name des gewählten Steuerelements (Control) sowie der Name des zugehörigen
Texts (Label):
Function StartControlAddIn(CtlName As String, LblName As String) As Integer
...
End Function
Bevor Sie jedoch versuchen, mit diesen beiden Werten etwas anzufangen, sollten Sie sich mit der Eigen-
schaft ActiveControl des Screen-Objekts näher beschäftigen. Speichern Sie diesen Wert in einer Objektvaria-
blen vom Typ Control, so können Sie später ohne Probleme auf alle Eigenschaften zugreifen.
Verwenden von
Screen.ActiveControl
Dim c As Control
Set c = Screen.ActiveControl
Doch bevor es so weit ist, müssen Sie sich wieder mit der Tabelle USysRegInfo auseinander setzen.
Optionen in der Tabelle USysRegInfo
Der Blick in die Tabelle:
Abbildung 15.77 Tabelle USysRegInfo (Ausschnitt)
Die erste Zeile legt einen neuen Schlüssel an.
Beachten Sie, dass diesmal zwei Unterschlüssel erzeugt werden müssen.
Der erste Unterschlüssel (im Beispiel »TextBox«) wählt den Steuerelementetyp aus, für den der Assistent
gedacht ist, der zweite Schlüssel dient der Unterscheidung, falls mehrere Assistenten (Wizards) für ein
Steuerelement vorhanden sind. In diesem Fall wird ein Auswahldialogfeld angezeigt. Der zweite Parameter
1003
Entwickeln von Assistenten und Add-Ins
HINWEIS
Kapitel 15: Anwendungsdesign
bestimmt, ob der Assistent auch für ein vorhandenes Steuerelement aufgerufen werden kann. Mit Descrip-
tion legen Sie eine Bezeichnung fest, die angezeigt wird, wenn es mehr als einen Wizard für das gewählte
Steuerelement gibt. Der Eintrag Library dürfte eindeutig sein, handelt es sich hier doch um den Namen der
Add-Ins-Datenbank. Funktion gibt den Namen der Eintrittsprozedur an.
Das Add-In-Formular
Unser Beispiel-Assistent hat die Aufgabe, die Konfiguration von Textfeldern zu verbessern. Neben dem
Steuerelementenamen soll auch die Eigenschaft ControlSource festgelegt werden. Dies jedoch nur dann,
wenn es sich um ein gebundenes Formular handelt.
Abbildung 15.78 Unser Assistent in der Entwurfsansicht
Seit Access 2007 die Formulare im Registerkartenformat anzeigt, ist es wichtig, dass Assistenten als Popup-
Fenster angezeigt werden (Eigenschaft Popup = True).
Sowohl Textfeld als auch Kombinationsfeld bleiben zunächst ungebunden, für den Inhalt sorgen wir per
VBA-Code.
Interaktion mit dem zu konfigurierenden Control
Wie schon erwähnt, sollte die Referenz auf das Steuerelement in einer Variablen gespeichert werden. Das
erledigen wir innerhalb der Form_Load-Ereignisprozedur:
Option Explicit
Private c As Control
Private Sub Form_Load()
On Error Resume Next
Das gerade erzeugte Control merken:
Set c = Screen.ActiveControl
If c.Parent.RecordSource <> "" Then listefüllen
End Sub
1004
Über die
Parent
-Eigenschaft des Steuerelements (Control)sst sich das umgebende Formular ansprechen.
Sollte dieses gebunden sein, ist die
RecordSource
-Eigenschaft gesetzt, d. h., wir können das Kombinationsfeld
(ComboBox) mit den verfügbaren Feldnamen füllen:
Sub listefüllen()
On Error Resume Next
Dim db As DATABASE
Dim rs As Recordset
Dim s As String
Dim i As Integer
Set db = CurrentDb()
Set rs = db.OpenRecordset(c.Parent.RecordSource)
For i = 0 To rs.Fields.Count – 1
If s <> "" Then
s = s & ";""" & rs.Fields(i).Name & """"
Else
s = s & """" & rs.Fields(i).Name & """"
End If
combo1.RowSource = s
Next i
End Sub
Wie Sie dem Listing entnehmen können, erzeugen wir kurzzeitig ein
Recordset
-Objekt. Der Typ (Dynaset
oder Table) ist für unser Add-In uninteressant, wir müssen lediglich die
Fields
-Auflistung auslesen.
Für das Setzen der Eigenschaften des Steuerelements müssen wir natürlich ebenfalls sorgen:
Private Sub Button1_Click()
On Error Resume Next
If Text2.Value <> "" Then c.Name = Text2.Value
If combo1.value <> "" Then c.ControlSource = combo1.Value
DoCmd.Close acForm, Me.Name
End Sub
Natürlich ist obiger Wizard noch nicht »der Weisheit letzter Schluss«, die Grundfunktionalität eines Steuer-
elemente-Assistenten dürfte jedoch damit ausreichend geklärt sein. Insbesondere der Fehlerbehandlung
sollten Sie etwas mehr Zeit widmen, als es die Autoren tun konnten. Ein billiges On Errror Resume Next
wäre schlichtweg »Dünnbrettbohrerei« mit verhängnisvollen Auswirkungen.
Neben dem o.g. Steuerelemente-Assistenten könnten Sie auch einen Eigenschaften-Assistenten erstellen,
der dann über die Schaltfläche im Eigenschaftenfenster aktiviert wird:
Abbildung 15.79 Eigenschaften eines Formulars
1005
Entwickeln von Assistenten und Add-Ins

Get Microsoft Office Access 2007-Programmierung - Das Handbuch now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.