ABOUT Visual Basic Programmieren Programmierung Download Downloads Tips & Tricks Tipps & Tricks Know-How Praxis VB VBA Visual Basic for Applications VBS VBScript Scripting Windows ActiveX COM OLE API ComputerPC Microsoft Office Microsoft Office 97 Office 2000 Access Word Winword Excel Outlook Addins ASP Active Server Pages COMAddIns ActiveX-Controls OCX UserControl UserDocument Komponenten DLL EXE
Diese Seite wurde zuletzt aktualisiert am 09.01.2000

Diese Seite wurde zuletzt aktualisiert am 09.01.2000
Aktuell im ABOUT Visual Basic-MagazinGrundlagenwissen und TechnologienKnow How, Tipps und Tricks rund um Visual BasicActiveX-Komponenten, Controls, Klassen und mehr...AddIns für die Visual Basic-IDE und die VBA-IDEVBA-Programmierung in MS-Office und anderen AnwendungenScripting-Praxis für den Windows Scripting Host und das Scripting-ControlTools, Komponenten und Dienstleistungen des MarktesRessourcen für Programmierer (Bücher, Job-Börse)Dies&Das...

Themen und Stichwörter im ABOUT Visual Basic-Magazin
Code, Beispiele, Komponenten, Tools im Überblick, Shareware, Freeware
Ihre Service-Seite, Termine, Job-Börse
Melden Sie sich an, um in den vollen Genuss des ABOUT Visual Basic-Magazins zu kommen!
Informationen zum ABOUT Visual Basic-Magazin, Kontakt und Impressum

Zurück...

Zurück...


Anzeige

Von Martin Szugat mailto:mszugat@aboutvb.de

...aber Validierung ist besser. Denn als Entwickler sollten Sie sich niemals darauf verlassen, dass die Anwender Ihrer Programme nur gültige Eingaben tätigen. Die Überprüfung von gültigen Benutzereingaben, im Fachjargon "Validierung" genannt, kann entweder bereits während der Eingabe erfolgen, oder erst dann, wenn die Eingaben verarbeitet werden. Für die Realisierung der ersten Variante stellt Visual Basic in der Version 6.0 das neu hinzugekommene MSDN-Library - VB Validate-EreignisValidate-Ereignis zur Verfügung. Dieses Validate-Ereignis wird von einem Steuerelement ausgelöst, wenn der Fokus von ihm zu einem anderen Steuerelement wechselt.

Im Validate-Ereignis können Sie den Inhalt des Steuerelements prüfen und gegebenenfalls den Fokuswechsel über den Cancel-Parameter unterbinden. Der Anwender wird hierdurch gezwungen, korrekte Eingaben zu tätigen, bevor er zum nächsten Eingabefeld wechselt oder etwa die Verarbeitung der Eingaben durch eine Schaltfläche in Gang setzt.

Steuerelemente, die weder zur Eingabe noch zur Verarbeitung der Eingaben dienen, wie zum Beispiel eine Schließen- oder Abbrechen-Schaltfläche, lassen sich von der Validierung ausschließen, indem deren MSDN-Library - VB CausesValidationCausesValidation-Eigenschaft auf den Wert False gesetzt wird. Bei einem Fokuswechsel von einem Steuerelement, dessen CausesValidation-Eigenschaft deren Wert True ist, zu einem Steuerelement mit dem Wert False für die CausesValidation-Eigenschaft, wird das Validate-Ereignis nicht ausgelöst. Nur wenn auch die CausesValidation-Eigenschaft des zweiten Steuerelements gleich True ist, wird für das erste Steuerelement das Validate-Ereignis ausgelöst.


Die Eingabe von nicht auswertbaren Zeichen (hier Text statt Datum) löst ohne Vorkehrungen einen Laufzeitfehler im Validate-Ereignis aus

Als Beispiel sehen Sie hier eine kleine Anwendung, die der Berechnung des Alters einer Person in Tagen dient. Der Anwender trägt sein Geburtstagsdatum in eine einfache TextBox ein und betätigt anschließend die mit "Berechne" beschriftete Schaltfläche.

Daraufhin erscheint in der unteren TextBox das Alter der Person in Tagen. Mit der zweiten Schaltfläche wird die Anwendung beendet. Das Eingabefeld für das Geburtstagsdatum wurde mit einer Validate-Ereignisprozedur hinterlegt, so dass falsche Eingaben seitens des Anwenders ausgeschlossen werden. Die Validierung erfolgt mittels der IsDate-Funktion. Liefert die IsDate-Funktion als Ergebnis False, wird der Cancel-Parameter des Validate-Ereignisses auf True gesetzt und die Schrift der TextBox wird rot eingefärbt, um dem Anwender eine ungültige Eingabe zu signalisieren. Andernfalls wird die Eingabe grün dargestellt.

Damit der Anwender trotz einer falschen Eingabe in die TextBox die Anwendung beenden kann, ist die CausesValidation-Eigenschaft der Schließen-Schaltfläche auf den Wert False gesetzt. Des weiteren wurde deren Cancel-Eigenschaft auf den Wert True gesetzt, so dass sich die Anwendung auch über die Escape-Taste beenden lässt.

Hingegen wurde die Berechne-Schaltfläche über ihre Default-Eigenschaft zur Standardschaltfläche erklärt. Folglich wird bei einer Betätigung der Enter-Taste das Click-Ereignis der Berechne-Schaltfläche ausgelöst. In der entsprechenden Ereignisprozedur wird die Anzahl der Tage zwischen dem aktuellen Datum und dem Geburtstagsdatum mittels der DateDiff-Funktion berechnet und das Ergebnis in der unteren TextBox ausgegeben.

Private Sub cmdCalc_Click()
  txtAge.Text = DateDiff("d", txtBirthday.Text, Date)
End Sub

Private Sub cmdClose_Click()
  Unload Me
End Sub

Private Sub txtBirthday_Change()
  txtBirthday.ForeColor = vbBlack
End Sub

Private Sub txtBirthday_GotFocus()
  txtBirthday.SelStart = 0
  txtBirthday.SelLength = Len(txtBirthday.Text)
End Sub

Private Sub txtBirthday_Validate(Cancel As Boolean)
  Cancel = Not IsDate(txtBirthday.Text)
  txtBirthday.ForeColor = IIf(Cancel, vbRed, vbGreen)
End Sub

Starten Sie die Anwendung (Beispiel-Projekt Version1) in der Visual Basic-Entwicklungsumgebung und geben in der ersten TextBox Ihr Geburtstagsdatum ein. Wenn Sie nun die Berechne-Schaltfläche anklicken, erhalten Sie Ihr Alter in Tagen (...aber bitte nicht erschrecken...!). Als nächstes geben Sie statt eines gültigen Datums zum Beispiel eine beliebige Zeichenfolge ein und versuchen die Berechne-Schaltfläche erneut mit der Maus zu betätigen. Wie Sie bemerken werden, blockiert die Validate-Ereignisprozedur die Betätigung der Berechne-Schaltfläche erfolgreich, zumindest was die Tabulator-Taste und die Maus anbelangt. Doch die Enter-Taste ist hiervon nicht betroffen.

Das Click-Ereignis der Berechne-Schaltfläche wird ausgelöst, ohne dass vorher das Validate-Ereignis zum Zuge kam. In Folge des ungültigen Datums erhalten Sie im Click-Ereignis einen Typfehler bei dem Versuch, die Zeichenfolge in der Textbox in einen Wert vom Typ Date zu konvertieren. Für solche Fälle stellt Visual Basic die Methode MSDN-Library - VB ValidateControlsValidateControls zur Verfügung. Die ValidateControls-Methode ist eine Methode des Form-Objekts. Sie zwingt sämtliche Steuerelemente auf dem Formular dazu, Ihr Validate-Ereignis abzuarbeiten. Falls nur eine der Validate-Ereignisprozeduren mit einem Cancel-Parameter vom Wert True zurückkehrt, löst die ValidateControls-Methode ihrerseits den Laufzeitfehler mit der Nummer 380 (entspricht "Ungültiger Eigenschaftswert") aus. Diesen Laufzeitfehler können Sie abfangen und entsprechend darauf reagieren.

Im Falle unserer kleinen Anwendung (Beispiel-Projekt Version2) wird die Ausführung der Click-Ereignisprozedur zum Ende der Prozedur umgeleitet.

Private Sub cmdCalc_Click()
  On Error GoTo Exception
  ValidateControls
  txtAge.Text = DateDiff("d", txtBirthday.Text, Date)
Exception:
End Sub

Den Laufzeitfehler bei nicht auswertbaren Eingaben können Sie problemlos abfangen


Beispiel-Projekte Validation (validation.zip - ca. 4,1 KB)






Themen - Allgemeines
Themen - Entwicklungsumgebung (VB-IDE)
Themen - Forms
Themen - Steuerelemente (Controls)
Themen - Grafik
Themen - Dateien
Themen - UserControls
Themen - Einsteiger-Tipps
Themen - Wussten Sie...?

Übersicht nach Titeln in alphabetischer Reihenfolge
Übersicht nach Erscheinungsdatum

Schnellsuche



Zum Seitenanfang

Copyright © 1999 - 2017 Harald M. Genauck, ip-pro gmbh  /  Impressum

Zum Seitenanfang

Zurück...

Zurück...

Download Internet Explorer