Folgendes Szenario: Beim Wechseln der Registerkarte wird hierzu das "Click"-Ereignis ausgelöst. Über den Parameter PreviousTab kann die vorige Registerkarte abgefragt werden: Private Sub SSTab1_Click(PreviousTab As Integer) If PreviousTab = 0 Then ' Prüfen, ob alle zwingenden Angaben der ' 1. Registerkarte gemacht wurden ' ' In diesem Beispiel darf die TextBox "txtName" ' nicht leer sein If Len(txtName.Text) = 0 Then ' Falls nicht, Wechsel der Registerkare unterbinden ' und 1. Registerkarte wieder aktivieren SSTab1.Tab = 0 MsgBox "Bitte geben Sie zunächst Ihren Namen ein!" End If ElseIf PreviousTab = 1 Then ' Prüfen, ob alle zwingenden Angaben der ' 2. Registerkarte gemacht wurden ' ' In diesem Beispiel darf die TextBox "txtEMail" ' nicht leer sein If Len(txtEMail.Text) = 0 Then ' Falls nicht, Wechsel der Registerkare unterbinden ' und 2. Registerkarte wieder aktivieren SSTab1.Tab = 1 MsgBox "Bitte EMail-Adresse eingeben!" End If End If End Sub Viele User würden obigen Code für "richtig" finden, staunen aber nicht schlecht, wenn Sie den Code ausführen. Durch die Anweisung SSTab.Tab = ... wird autom. wieder das Click-Ereignis ausgelöst, wobei der Parameter "PreviousTab" diesmal schon den Wert der neuen Registerkarte besitzt. Der Code im Click-Ereignis wird daher wieder ausgeführt, was zu einer Endlosschleife führt! Mit nachfolgender Änderung kann man die Endlosschleife unterbinden und den Wechsel der Registerkarte bei fehlenden Angaben korrekt unterbinden: Private Sub SSTab1_Click(PreviousTab As Integer) Static bWorking As Boolean If bWorking Then Exit Sub bWorking = True If PreviousTab = 0 Then ' Prüfen, ob alle zwingenden Angaben der ' 1. Registerkarte gemacht wurden ' ' In diesem Beispiel darf die TextBox "txtName" ' nicht leer sein If Len(txtName.Text) = 0 Then ' Falls nicht, Wechsel der Registerkare unterbinden ' und 1. Registerkarte wieder aktivieren SSTab1.Tab = 0 MsgBox "Bitte geben Sie zunächst Ihren Namen ein!" End If ElseIf PreviousTab = 1 Then ' Prüfen, ob alle zwingenden Angaben der ' 2. Registerkarte gemacht wurden ' ' In diesem Beispiel darf die TextBox "txtEMail" ' nicht leer sein If Len(txtEMail.Text) = 0 Then ' Falls nicht, Wechsel der Registerkare unterbinden ' und 2. Registerkarte wieder aktivieren SSTab1.Tab = 1 MsgBox "Bitte EMail-Adresse eingeben!" End If End If bWorking = False End Sub Dieser Tipp wurde bereits 9.970 mal aufgerufen.
Anzeige
![]() ![]() ![]() (einschl. Beispielprojekt!) Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
Neu! sevCoolbar 3.0 ![]() Professionelle Toolbars im modernen Design! Mit sevCoolbar erstellen Sie in wenigen Minuten ansprechende und moderne Toolbars und passen diese optimal an das Layout Ihrer Anwendung an (inkl. große Symbolbibliothek) - für VB und MS-Access Tipp des Monats Access-Tools Vol.1 ![]() Über 400 MByte Inhalt Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB |
||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |