Rubrik: Controls · UserControl | VB-Versionen: VB6 | 17.01.11 |
Eigener OptionButton auf Basis eines eigenen UserControls Ihnen ist der Standard OptionButton von VB zu langweilig? Dann bauen Sie sich doch Ihren eigenen OptionButton auf Basis eines UserControls. | ||
Autor: Dieter Otter | Bewertung: | Views: 10.560 |
www.tools4vb.de | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Sollte Ihnen das Standard Option-Steuerelement von VB6 nicht gefallen, erstellen Sie sich einfach ein eigenen OptionButton auf Basis eines UserControls. Einzige "Schwierigkeit" für viele User ist das autom. Umschalten anderer Options-Schaltflächen innerhalb eines gemeinsamen Container-Objekts, so dass innerhalb des Containers immer nur ein OptionButton aktiviert ist.
Genau hierfür gibt es aber einen kleinen Trick, mit dem sich das gegenseitige Auslösen aller OptionButtons im gleichen Container-Objekt automatisch erledigen lässt.
Die Value-Eigenschaft des UserControls darf hierbei nicht als Boolean deklariert werden, sondern als Datentyp OLE_OPTEXKLUSIVE. Zusätzlich muss die Value-Eigenschaft noch als Standard-Eigenschaft festgelegt werden und schon verhält sich das eigene UserControl exakt so wie das Standard Option-Steuerelement von VB.
Codegerüst des eigenen UserControls
Option Explicit Private m_Value As OLE_OPTEXCLUSIVE
Public Property Get Value() As OLE_OPTEXCLUSIVE ' Status zurückgeben Value = m_Value End Property Public Property Let Value(ByVal NewValue As OLE_OPTEXCLUSIVE) ' Status ändern If m_Value <> NewValue Then m_Value = NewValue BackColor = IIf(m_Value = True, vbGreen, vbRed) PropertyChanged "Value" End If End Property
Private Sub UserControl_Click() ' Bei Klick Status wechseln Value = True End Sub
Private Sub UserControl_ReadProperties(PropBag As PropertyBag) ' Eigenschaften lesen Me.Value = PropBag.ReadProperty("Value", False) End Sub Private Sub UserControl_WriteProperties(PropBag As PropertyBag) ' Eigenschaften speichern PropBag.WriteProperty "Value", Me.Value, False End Sub
Beim Setzen der Value-Eigenschaft auf True (egal ob durch Klick auf das Control oder per Code) wird bei allen anderen "UserContols" im gleichen Container die Value-Eigenschaft auf False gesetzt.
Wichtig:
Im Dialog "Prozedur-Attribute" des UserControls muss die Value-Eigenschaft als Standard-Eigenschaft festgelegt sein. (= Auswahl (Voreinstellung) im ersten DropDown-Feld.)