Zurücksetzen eines Eingabewerts ◦ ?

Das Thema Grafische Benutzerschnittstelle führt an einfachen Steuerelementen in die Programmierung von Ereignissen ein. Im folgenden vertiefen wir die ereignisgetriebene Programmierung am Listenfeld LstAufgabentyp des Formulars FrmAllgemeines von Testverwaltung.mdb. Wir zeigen am Beispiel des Zurücksetzens in einem Listenfeld, wie Ereignisse und Ereignisprozeduren zusammenspielen:

### Anwendersicht

1. Der Benutzer geht im Listenfeld LstAufgabentyp von "Mehrfachwahl" auf "Zuordnung":

2. Weil diese Eingabe die Integrität der Aufgabendaten beeinträchtigen kann, erscheint die Meldung: "Wollen Sie den Typ wirklich ändern?

3. Falls der Benutzer die Frage bejaht, wird die Änderung durchgeführt, andernfalls zurückgesetzt.

### Entwicklersicht

Die beteiligten Ereignisse und Ereignisprozeduren entnehmen Sie der Eigenschaftenliste von LstAufgabentyp:

1. Wechseln Sie zur Entwurfsansicht (»Ansicht/Entwurfsansicht)

2. Klicken Sie auf das Listenfeld LstAufgabentyp

3. Drücken Sie »Alt/Eingabetaste

4. Mit einem Klick auf die Ereignisse »Beim Klicken und »Bei Maustaste ab gelangen Sie zu den folgenden Ereignisprozeduren:

#### a) LstAufgabentyp_MouseDown

Um eine Eingabe rückgängig zu machen, muss man auf den alten Wert zurückgreifen können. Weil jede Änderung eines Listenfelds das Drücken einer Maustaste voraussetzt, weist die Ereignisprozedur LstAufgabentyp_MouseDown jedesmal, wenn der Benutzer eine Maustaste drückt, dîe alte Auswahl der Modulvariable letzterAufgabentyp zu:

>     '--- Speichere letzten Aufgabentyp vor jedem Mausklick
>     Private Sub LstAufgabentyp_MouseDown(...)
>        letzterAufgabentyp = Me![Aufgabentyp]
>     End Sub

Das Präfix Me! bezieht sich immer auf das laufende Steuerelement oder Formular. Im Beispiel erspart Me! die explizite Nennung des Steuerelementnamens LstAufgabentyp.

#### b) LstAufgabentyp_Click

Im Gegensatz zum Ereignis MouseDown tritt Click erst dann ein, wenn der Benutzer eine Maustaste gedrückt und wieder losgelassen hat. Die Ereignisprozedur LstAufgabentyp_Click prüft mit If letzterAufgabentyp <> 0, ob das Steuerelement LstAufgabentyp bereits einen Eintrag enthält. Wenn ja, wird die Eingabe nach einer expliziten Bestätigung des Benutzers zurückgesetzt, indem letzterAufgabentyp dem Listenfeld Me![Aufgabentyp] zugewiesen wird. Die Methode Requery schreibt schliesslich den zurückgesetzten Wert sofort vom Formular in die Datenbank.

>     'Modulvariable zur Speicherung des letzten Aufgabentyps
>     Private letzterAufgabentyp As Byte '1 für Mehrfachwahl, 2 für Zuordnung, 3 für Essay

>     '--- Nach jeder Änderung des Aufgabentyps kann der Benutzer seine Wahl zurücksetzen
>     Private Sub LstAufgabentyp_Click()
>       If letzterAufgabentyp <> 0 Then
>         If MsgBox("Wollen Sie den Typ wirklich ändern? ...", ...) = vbNo Then
>           Me![Aufgabentyp] = letzterAufgabentyp
>           LstAufgabentyp.Requery
>         End If
>       End If
>     End Sub

Listenfeld
MsgBox