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 5/2009.

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

Zusammenfassung

Verwenden Sie benutzerdefinierte Ereignisse, um Formularen und Klassen noch mehr Flexibilität und Unabhängigkeit zu verleihen.

Techniken

Formulare, VBA, Ereignisprozeduren

Voraussetzungen

Access 2000 und höher

Beispieldateien

Ereignisse.mdb

Shortlink

685

Ereignisse im Eigenbau

André Minhorst, Duisburg

Ereignisse werden durch Formulare, Berichte und deren Steuerelemente ausgelöst und vielleicht noch durch einige Objekte, deren Ereignisse man sich auch noch extra per WithEvents-Anweisung gefügig machen muss. Oder gibt es da noch mehr? Ja, gibt es! Sie können nämlich eigene Ereignisse samt Ereignisprozedur und Parameter definieren und festlegen, wann diese ausgelöst werden. Wie das geht und was Sie davon haben, erfahren Sie in diesem Beitrag.

Eigene Ereignisse programmieren ... als ob die Menge der Ereignisse etwa von Formularen nicht schon unübersichtlich genug wäre! Und damit kann man doch alles machen, was nötig ist, oder nicht? Nun: Sie können schon eine Menge mit den eingebauten Ereignissen erledigen, aber fehlte Ihnen da noch nie etwas?

Bevor wir zu einem handfesten Beispiel für das Erweitern eines Formulars um ein benutzerdefiniertes Ereignis kommen, schauen wir uns die grundlegende Technik einmal an, und zwar am Beispiel einer Klasse, die von einem Formular referenziert und verwendet wird.

Die Klasse soll irgendetwas unheimlich Spannendes und Aufwendiges tun, was wir in diesem Beitrag aber gar nicht unbedingt komplett beleuchten müssen - zum Beispiel eine E-Mail versenden, deren Daten der Klasse zuvor zugewiesen wurden. Die Klasse enthält zunächst einige Eigenschaften, die für den Versand einer Mail wichtig sind:

Dim m_Empfaenger As String

Dim m_Absender As String

Dim m_Betreff As String

Dim m_Inhalt As String

Diese Eigenschaften macht die Klasse nach außen über eine Public Property verfügbar - hier etwa für die Eigenschaft Empfaenger:

Public Property Let Empfaenger(strEmpfaenger

As String)

m_Empfaenger = strEmpfaenger

End Property

Das ist alles noch nichts Neues - auch nicht die Methode Senden, mit der man den Versand der E-Mail durchführen kann und die hier um die eigentliche Funktion erleichtert wurde:

Public Sub Senden()

‘Versendet die E-Mail ...

‘ ... viele Befehle ...

‘Ruft benutzerdefiniertes Ereignis auf:

RaiseEvent MailVersendet

End Sub

Interessant wird es bei der Zeile RaiseEvent MailVersendet. RaiseEvent sorgt dafür, dass das als Parameter angegebene Ereignis ausgelöst wird. Dieses müssen Sie vorher allerdings noch deklarieren, und zwar im Modulkopf:

Public Event MailVersendet()

Dies ist die denkbar einfachste Variante einer Ereignisdefinition - das nackte Ereignis enthält keinerlei Parameter.

Wenn Sie im VBA-Editor zunächst das Ereignis mit dem Schlüsselwort Events deklarieren, können Sie später nach der Eingabe des Befehls RaiseEvents per IntelliSense darauf zugreifen (s. Abb. 1).

pic002.png

Abb. 1: Auf benutzerdefinierte Ereignisse können Sie im gleichen Modul per IntelliSense zugreifen.

Wenn Sie nun ein Formular wie das aus Abb. 2 verwenden, können Sie darüber ein Objekt auf Basis der Klasse clsMail instanzieren, mit den benötigten Daten füttern und die Mail absenden. Ach, und natürlich können Sie auf das Ereignis reagieren, das beim Absenden der Mail ausgelöst wird. Dies geschieht in drei Schritten:

pic001.png

Abb. 2: Dieses Formular reagiert auf das benutzerdefinierte Ereignis der Klasse clsMail.

Zunächst einmal müssen Sie eine Objektvariable für die Klasse clsMail deklarieren. Dabei verwenden Sie das Schlüsselwort WithEvents, welches es ermöglicht, dass Sie auf die Ereignisse der Klasse reagieren können:

Dim WithEvents objMail As clsMail

Dann instanzieren Sie die Klasse und weisen dieser die Werte aus den Textfeldern des Formulars zu:

Private Sub cmdSenden_Click()

Set objMail = New clsMail

With objMail

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:

Verwandte Beiträge:

Ereignisprozeduren

Formularposition speichern und wiederherstellen

TreeView-Konfigurator

Navigationsleiste im Eigenbau

Änderungsdaten protokollieren

Ereignisprozeduren implantieren

Validieren mit Klasse

Erweitern des VBA-Editors

Modale Dialoge mal anders

Drag and Drop in der Datenblattansicht

Termine in Berichten darstellen

Globale Suche

Tipps und Tricks

Tabellen wie unter Excel

Excel-Import-Assistent im Eigenbau

Registersteuerelemente von A-Z

Formulare öffnen

Inhaltsverzeichnisse für Access-Berichte

Unterformulare: Daten anlegen und löschen

VBA-Code bearbeiten

Das Factory-Pattern

Effizientes Codieren

Schnittstellenvererbung

© 2003-2015 André Minhorst Alle Rechte vorbehalten.