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

https://www.vbarchiv.net
Rubrik: Controls · UserControl   |   VB-Versionen: VB5, VB604.05.04
Globale Eigenschaften im ActiveX-Control

Mit Hilfe eines Klassenmoduls lassen sich sehr einfach globale Eigenschaften für ein UserControl festlegen.

Autor:   Dieter OtterBewertung:  Views:  14.947 
www.tools4vb.deSystem:  Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11kein Beispielprojekt 

Vielleicht kennen auch Sie das Problem: Sie haben ein ActiveX-Steuerelement erstellt, wobei der Anwender bestimmte Eigenschaften GLOBAL für alle Instanzen des ActiveX-Controls festlegen können soll. Als Beispiel möchte ich an dieser Stelle auf das  sevEingabe v2.0 ActiveX-Control verweisen. Hier hat man bswp. die Möglichkeit die Sprache der integrierten Dialoge global festzulegen:

' Startmodul
Public Sub Main()
  ' globale Einstellungen festlegen
 
  ' Sprache: Deutsch
  sevTextBox.Language = German
 
  ' Datumsformat: dd.mm.yyyy
  sevTextBox.DateFormatShort = "dd.mm.yyyy"
 
  ' Währungskürzel immer fest auf € setzen
  sevTextBox.CurrencyText = "€"
  ...
End Sub

Wie funktioniert so etwas?
Zunächst müssen Sie Ihrem ActiveX-Control ein KLASSENMODUL hinzufügen. Damit die Klasse später nicht explizit erstellt werden muss, setzen Sie die Eigenschaft Instancing auf den Wert GlobalMultiUse. Jetzt erstellen Sie die gewünschten Eigenschaften-Prozeduren (Property-Prozeduren):

Option Explicit
 
Public Enum axLanguage
  German = 0
  English = 1
End Enum
Public Property Get Language() As axLanguage
  Language = m_Language
End Property
 
Public Property Let Language(ByVal nLanguage As axLanguage)
  m_Language = nLanguage
End Property
Public Property Get DateFormatShort() As String
  DateFormatShort = m_DateFormatShort
End Property
 
Public Property Let DateFormatShort(ByVal sFormat As String)
  m_DateFormatShort = sFormat
End Property

Damit die Eigenschaften GLOBAL gespeichert und abgerufen werden können, benötigen Sie noch ein MODUL mit den Member-Variablen:

Option Explicit
 
' Membervariablen für globale Eigenschaften
Public m_Language As axLanguage
Public m_DateFormatShort As String

Das war's dann auch schon. Ab sofort verfügt auch Ihr ActiveX-Control über globale Eigenschaften, die Sie dann direkt im UserControl-Code verwenden können.

Hinweis:
Sollen die globalen Eigenschaften mit bestimmten Defaultwerten vorbelegt werden, deklarieren Sie im Modul eine zusätzliche Variable bInit:

Public bInit As Boolean

Beim ersten Zugriff auf die globalen Eigenschaften prüfen Sie dann, ob die Defaultwerte bereits festgelegt sind:

Private Sub Class_Initialize()
  ' Defaultwerte festlegen
  If Not bInit Then
    bInit = True
    m_Language = German
    m_DateFormatShort = "dd.mm.yyyy"
  End If
End Sub

Die globalen Eigenschaften selbst lassen sich wie folgt festlegen und abrufen:

Class1.Language = English
MsgBox Class1.DateFormatShort



Anzeige

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

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.