|
Eine ganze Menge an Informationen liefert Ihnen das App-Objekt
über sich selbst, über Ihre Anwendung also. So erhalten Sie etwa
einige wichtige Informationen, die das Verhalten einer Anwendung zur
Laufzeit beeinflussen können, wie App.EXEName, App.Path
und auch App.Title. Nur den Projektnamen können Sie
nirgendwo in Erfahrung bringen. Bei einer Standard-EXE-Anwendung ist
dieser auch nicht von sonderlicher Bedeutung. Bei einer
ActiveX-Komponente ist er jedoch nicht unwichtig. So ist er in den
meisten Fällen (zumindest bei mit Visual Basic entwickelten
Komponenten) Bestandteil der so genannten ProgId, die Sie
beispielsweise benötigen, um eine ActiveX-DLL oder -EXE
per CreateObject(ProgId) oder ein Steuerelement per Controls.Add(ProgId)
dynamisch zu laden. Den zweiten Bestandteil der ProgId, den nach dem
Punkt, liefert immerhin die VB-Funktion TypeName
- den vorderen Bestandteil hingegen finden Sie offensichtlich
nirgendwo.
Natürlich - wenn ich schon "offensichtlich" sage, dann
steckt die gesuchte Information wohl doch irgendwo: Innerhalb eines
Projekts enthält die Source-Eigenschaft
des Err-Objekts
nach dem Auftreten bzw. Auslösen (per Err.Raise) den
Projektnamen. Sie brauchen lediglich bewusst einen harmlosen Fehler
auszulösen und die Source-Eigenschaft auszulesen. Stecken Sie diese
Auslösung eines Fehlers in eine Property Get-Prozedur in ein
Standard-Modul, und schon haben Sie den Projektnamen überall und
bequem im gesamten Projekt zur Verfügung.
Public Property Get AppProjectName() As String
On Error Resume Next
Err.Raise 999
AppProjectName = Err.Source
On Error GoTo 0
End Property
Gegegebenenfalls können Sie die Klassen Ihrer ActiveX-Komponenten
oder die UserControls Ihrer ActiveX-Steuerelemente mit einer solchen
(hier öffentlichen) Eigenschaft versehen. Dann können Sie
jederzeit aus dem Namen der Klasse und dem Projektnamen die
vollständige ProgId zusammensetzen:
ProgId = MyClass.AppProjectName & "." & TypeName(MyClass)
Oder Sie versehen die Klasse bzw. das UserControl gleich mit
einer ProgId-Eigenschaft:
Public Property Get ProgId() As String
ProgId = AppProjectName & "." & TypeName(Me)
End Property
|