Gemeinsam zu mehr Effizienz in der Anwendungserstellung
Der unten angeführte Code zeigt nur ein Prinzip und stellt keine fertige Lösung dar.
Inhaltsverzeichnis |
Code-Prinzip:
' Ereignis für Weitergabe des Login-Status Public Event LoginChanged(ByVal UserLoggedOn as Boolean, ByVal UserName as String) ' LoggedOn ... True = User ist angemeldet, Fals = User hat sich abgemeldet ' Login-Methode Public Function Login(ByVal NewUsername As String, ByVal Password As String) as Boolean ... Login prüfen usw. If LoginWarErfolgreich then RaiseEvent LoginChanged(True, NewUsername) End If ' Diese Prozedur wird später vom Login-Formular verwendet End Function Public Sub Logout() ... Intern aufräumen RaiseEvent LoginChanged(False, Me.Username) End Sub 'Hilfsprozedur um bei Bedarf den Anmeldestatus abzufragen: Public Property Get IsLoggedIn() as Boolean ... End Property ' .. und auch gleich noch den aktuell angemeldeten Usernamen: Public Property Get UserName() As String ... End Property
Da man von dieser Klasse vermutlich nur eine Instanz benötigt, könnte man diese Instanz über ein allgemeines Modul erstellen.
Private m_UserLogon As UserLogon Public Property Get CurrentUserLogon() As UserLogon If m_UserLogon Is Nothing then set m_UserLogon = New UserLogon End If Set CurrentUserLogon = m_UserLogon End Property
In einem Formular, das nur für eingeloggte User volle Funktionalität ermöglichen soll, wird die Klasse UserLogon folgendermaßen verwendet:
Private WithEvents m_CurrentUserLogon As UserLogon 'm_CurrentUserLogon einstellen: Private Sub Form_Load() Set m_CurrentUserLogon = CurrentUserLogon Call aktiviereSonderBereiche(m_CurrentUserLogon.IsLoggedIn) End Sub 'Auf Ereignis bei Anmeldungsänderung reagieren Private Sub m_CurrentUserLogon_LoginChanged(ByVal UserLoggedOn as Boolean, ByVal UserName as String) call aktiviereSonderBereiche(UserLoggedOn) End Sub 'Hilfsfunktion zum Einstellen der Steuerelemente: Private Sub aktiviereSonderBereiche(ByVal bAktivieren as Boolean) 'z. B.: Me.cmdDeleteRecordset.Enabled = bAktivieren ... End Sub