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 13.01.2000

Diese Seite wurde zuletzt aktualisiert am 13.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 IE, 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

(-hg) mailto:hg_wsproperrs@aboutvb.de

Wussten Sie,...

...dass Visual Basic einige vordefinierte Fehler-Codes zur Verfügung stellt, die das Setzen und Lesen von Eigenschaften betreffen?

Sie definieren beispielsweise in einem UserControl oder einer Klasse eine Eigenschaft mit einem enumerierten Datentyp. Die Deklaration dieses Datentyps bewirkt jedoch nicht, dass Visual Basic von sich aus prüft, ob ein übergebener Wert ein Element der Enumeration ist, und alle anderen Werte zurückweist. Die Zugehörigkeit eines Wertes zu einer Enumeration müssen Sie selbst prüfen. Aber auch bei Eigenschaften jedes anderen beliebigen Datentyps können Sie natürlich Ihre eigenen Regeln für gültige Werte aufstellen und übergebene Werte anhand Ihrer Regeln prüfen.

Die Übergabe von in diesem Sinne ungültigen Werten sollten Sie jedoch nicht einfach nur ignorieren, sondern mit einer Fehlermeldung quittieren. Dafür bietet sich der vordefinierte Fehlercode 380 an. Wird der ungültige Wert im Eigenschaften-Fenster eines Steuerelements eingegeben, gibt Visual Basic automatisch die Fehlermeldung aus.

If UngueltigerWert Then
  Err.Raise 380
End If

Weist der Anwender einer Eigenschaft einen gültigen Wert zu, gibt Visual Basic eine Fehlermeldung aus

Allerdings sollten Sie den Anwender nicht rätseln lassen, welche Werte denn statt dessen gültig sind, sondern der Fehlermeldung eine einigermaßen informative Beschreibung (Err. Description) mit auf den Weg geben, etwa:

If UngueltigerWert Then
  Err.Raise 380, , "Nur gültig: 1 - 9"
End If

Weitere vordefinierte Fehlermeldungen stellt Visual Basic für Eigenschaften bereit, die zur Laufzeit nur lesbar oder nicht lesbar sein sollen. Letzteres macht nicht allzu viel Sinn - eine Eigenschaft, die zur Laufzeit keinen sinnvollen Wert liefert, kommt wohl nur selten vor. Den ersten Fall werden Sie jedoch zur Genüge kennen, wenn Sie schon einmal versucht haben sollten, zum Beispiel die Eigenschaft MultiLine einer TextBox zur Laufzeit ändern zu wollen. Es mag sicher eine ganze Reihe Fälle geben, in denen eine solche Sperre zur Laufzeit ihren Sinn hat. Aber vielleicht überlegen Sie sich ja dabei genau, ob Sie Ihre Anwender genau so frustrieren möchten, wie VB Sie zu frustrieren pflegt...

Im folgenden Muster einer selbstdefinierten Eigenschaft sehen Sie zusammengefasst die Verwendung dieser drei von VB vordefinierten Eigenschaftenfehler:

Public Enum TestEnumConstants
  tcFirst
  tcSecond
  tcThird
  tcAny = 99
End Enum

Private pTestEnum As TestEnumConstants
Private pTestString As String

Public Property Get TestEnum() As TestEnumConstants
  If Ambient.UserMode Then
    Err.Raise 393, Ambient.DisplayName & ".Get"
  Else
    TestEnum = pTestEnum
  End If
End Property

Public Property Let TestEnum(ByVal New_TestEnum As TestEnumConstants)
  If Ambient.UserMode Then
    Err.Raise 382, Ambient.DisplayName & ".Set"
  Else
    Select Case New_TestEnum
      Case pTestEnum
      Case tcFirst To tcThird, tcAny
        pTestEnum = New_TestEnum
      Case Else
        Err.Raise 380, , "Sie können nur Werte von tcFirst bis tcThird und tcAny eingeben!"
    End Select
    PropertyChanged "TestEnum"
  End If
End Property

Public Property Get TestString() As String
  TestString = pTestString
End Property

Public Property Let TestString(New_TestString As String)
  If Left$(UCase$(New_TestString), 1) <> "A" Then
    Err.Raise 380, , "Der String muss mit einem 'A' beginnen!"
  End If
  pTestString = New_TestString
  PropertyChanged "TestString"
End Property

Private Sub UserControl_ReadProperties(PropBag As PropertyBag)
  pTestEnum = PropBag.ReadProperty("TestEnum", tcFirst)
  pTestString = PropBag.ReadProperty("TestString", "")
End Sub

Private Sub UserControl_WriteProperties(PropBag As PropertyBag)
  PropBag.WriteProperty "TestEnum", pTestEnum, tcFirst
  PropBag.WriteProperty "TestString", pTestString, ""
End Sub

Muster für selbstdefinierte Eigenschaften mit Prüfung auf gültige Werte


Beispiel-Projekt PropErrsTest (properrs.zip - ca. 2,6 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