vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#

https://www.vbarchiv.net
Rubrik: Controls · UserControl   |   VB-Versionen: VB617.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 OtterBewertung:  Views:  10.559 
www.tools4vb.deSystem:  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.)

Standard-Eigenschaft festlegen



Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
 
Copyright ©2000-2024 vb@rchiv Dieter OtterAlle Rechte vorbehalten.


Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.