2.24 Wie verwende ich benutzerdefinierte Typen in öffentlichen Methoden?
VB6
Von: Thorsten Dörfler
Wenn Sie in einem Standard-EXE Projekt einen benutzerdefinierten Datentyp (UDT) als Rückgabe einer öffentlichen Methode oder Eigenschaft verwenden möchten, erhalten Sie folgende Fehlermeldung:
Fehler beim Kompilieren: Private Enum-Typen und benutzerdefinierte Typen können nicht als Parameter oder Rückgabetypen für öffentliche Prozeduren oder als öffentliche Datenmitglieder verwendet werden
Sie beheben dieses Problem, indem sie einen öffentlichen benutzerdefinierter Typ in einem _öffentlichen_ Objektmodul anlegen. Nun stellt ein Standard-EXE Projekt aber keine öffentlichen Objektmodule bereit. Beschränkt auf Bordmittel, kann das nur in einer Klasse/einem UserControl in einem ActiveX-DLL, ActiveX-Steuerelement oder ActiveX-EXE Projekt geschehen.
In einem Standard-EXE Projekt sind Sie auf externe Verweise angewiesen, die diesen UDT öffentlich bereitstellen. Das kann zum Beispiel eine TypeLibrary sein, die man per IDL erstellt hat. Wenn Sie jedoch mit IDL und der Erstellung von TypeLibraries bisher gar nichts zu tun hatten, können Sie auch eine eigene ActiveX-DLL erstellen, die in einer öffentlichen Klasse den UDT deklariert
Nachdem Sie diese DLL kompiliert haben, fügen Sie den Verweis auf diese DLL zu Ihrem Standard-EXE Projekt hinzu und können den UDT als Parameter oder Rückgabewert der öffentlichen Methode oder Eigenschaft verwenden.
Solange diese DLL auch nur die Schnittstellenbeschreibung Ihres UDT bereitstellt, brauchen Sie diese später auch nicht ausliefern. Die Schnittstellenbeschreibung wird nur während der Entwicklung in der IDE benötigt.
Alternativ können Sie in Erwägung ziehen, statt einem UDT, ein Klassenmodul mit den benötigten Eigenschaften anlegen. Für Klassenmodule zählt die Einschränkung nicht und somit kommt man ohne externe Schnittstellenbeschreibung aus.