vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Blitzschnelles Erstellen von grafischen Diagrammen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück
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:     [ Jetzt bewerten ]Views:  10.519 
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

Dieser Tipp wurde bereits 10.519 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Aktuelle Diskussion anzeigen (1 Beitrag)

nach obenzurück


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.
 
   

Druckansicht Druckansicht Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle 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.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel