Rubrik: Controls · UserControl | VB-Versionen: VB5, VB6 | 04.05.04 |
Globale Eigenschaften im ActiveX-Control Mit Hilfe eines Klassenmoduls lassen sich sehr einfach globale Eigenschaften für ein UserControl festlegen. | ||
Autor: Dieter Otter | Bewertung: | Views: 14.947 |
www.tools4vb.de | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | kein 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