|
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
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

|

|