|
Wenn Ihnen das Standard-Aussehen des OptionButtons nicht
gefällt, und wenn Ihnen auch die Variante als grafische
Schaltfläche nicht gefällt, können Sie auch eigene
Options-Steuerelemente auf der Basis eines UserControls erstellen.
Damit sich Ihr eigenes Options-Steuerelement wie das Original
verhält (gegenseitiges Auslösen aller im gleichen Container bzw.
im gleichen Form enthaltenen Options-Steuerelemente), ist lediglich
ein kleiner Trick notwendig. Die Eigenschaft, die den Zustand (Wert,
Value) der Option darstellen soll, muss als Datentyp OLE_OPTEXCLUSIVE
deklariert sein. Dieser spezielle Datentyp entspricht intern dem
Datentyp Boolean. Wird eine Eigenschaft eines ActiveX-Steuerelements
(UserControls) mit diesem Datentyp deklariert und als
Standard-Eigenschaft des betreffenden Steuerelements festgelegt,
erkennt Visual Basic daran (bzw. ein anderer OLE-Container), dass
das Steuerelement eine Option darstellt, und sorgt für das
gegenseitige Auslösen, ohne dass Sie weiter etwas dazu tun
müssten.
Die Standard-Eigenschaft legen Sie im Dialog
"Prozedurattribute" fest (das Code-Modul des UserControls
muss geöffnet und aktiv sein, dann Menü Extras). In der
Auswahlliste "Prozedur-ID" (sie wird nach einem Klick auf
"Weitere..." sichtbar) wählen Sie
"(Voreinstellung)".
Der folgende Code zeigt Ihnen ein Grundgerüst für ein eigenes
Options-Steuerelement.
Private pValue As OLE_OPTEXCLUSIVE
Public Property Get Value() As OLE_OPTEXCLUSIVE
Value = pValue
End Property
Public Property Let Value(ByVal New_Value As OLE_OPTEXCLUSIVE)
If New_Value <> pValue Then
pValue = New_Value
PropertyChanged "Value"
' zB Darstellung des Zustands:
Select Case pValue
Case False
UserControl.BackColor = vbGreen
Case True
UserControl.BackColor = vbRed
End Select
End If
End Property
Private Sub UserControl_Click()
Me.Value = True
End Sub
Private Sub UserControl_ReadProperties(PropBag As PropertyBag)
Me.Value = PropBag.ReadProperty("Value", False)
End Sub
Private Sub UserControl_WriteProperties(PropBag As PropertyBag)
PropBag.WriteProperty "Value", pValue, False
End Sub
|