Freigeben über


Die Objekthierarchie des Projekts

Die Objekthierarchie eines Projekts besteht aus dem Projekt, einem Projektobjekt und dem zugehörigen ProjectHook-Objekt. Ein Projektobjekt enthält eine Anzahl von Dateien (die zu dem Projekt gehörenden Dateien) und eine Anzahl von Servern (die aus dem Projekt erstellten Automatisierungsserver). Das folgende Diagramm veranschaulicht die Projektobjekthierarchie innerhalb des Objektmodells von Visual FoxPro:

Projects-Auflistung

Die Projects-Auflistung bietet direkten Zugriff auf ein Projektobjekt; sie gestattet Ihnen die Änderung des Projekts und der in diesem enthaltenen Dateien und Server. Jedes Mal, wenn ein Projekt erzeugt oder geöffnet wird oder eine APP-, DLL- oder EXE-Datei aus dem Projekt erstellt wird, wird zur Projects-Auflistung ein Projektobjekt hinzugefügt.

Wie bei anderen OLE-Auflistungen können Sie der Projects-Auflistung Informationen zu einem Projekt entnehmen. So verwendet beispielsweise der folgende Code die Eigenschaften Count und Item der Projects-Auflistung, um die Namen aller Projekte der Projects-Auflistung anzuzeigen; anschließend wird die gleiche Information mit Hilfe des FOR EACH-Befehls angezeigt:

nProjectCount = Application.Projects.Count

FOR nCount = 1 TO nProjectCount
   ? Application.Projects.Item(nCount).Name
NEXT

FOR EACH oProj IN Application.Projects
   ? oProj.Name
ENDFOR

Die folgende Codezeile verwendet die ActiveProject-Eigenschaft, um zu dem derzeit aktiven Projekt ein Programm (Main.prg) hinzuzufügen:

Application.ActiveProject.Files.Add('Main.prg')

Die folgende Codezeile fügt Main.prg zu dem ersten der Projects-Auflistung hinzugefügten Projekt hinzu:

Application.Projects[1].Files.Add('Main.prg')

Eine Projects-Auflistung verfügt über die folgende Eigenschaft und Methode:

Eigenschaften  
Count  
Methoden  
Item  

Projektobjekt

Das Projektobjekt wird immer dann instanziiert, wenn ein Projekt aus dem Menü Datei oder durch einen der Befehle CREATE PROJECT, MODIFY PROJECT, BUILD APP, BUILD DLL, BUILD EXE oder BUILD PROJECT geöffnet wird. Das Projektobjekt ermöglicht Ihnen die programmgesteuerte Änderung des Projekts; der Zugriff auf das Programmobjekt erfolgt durch das Visual FoxPro-Anwendungsobjekt. Beachten Sie, dass das Anwendungsobjekt die neue ActiveProject-Eigenschaft unterstützt, welche einen Projektobjektverweis auf das im derzeit aktiven Projekt-Manager geöffnete Projekt bereitstellt.

Ein Projektobjekt verfügt über die folgenden Eigenschaften und Methoden:

Eigenschaften  
Application AutoIncrement
BaseClass BuildDateTime
Debug Encrypted
HomeDir Icon
MainClass MainFile
Name Parent
ProjectHook ProjectHookClass
ProjectHookLibrary SCCProvider
ServerHelpFile ServerProject
TypeLibCLSID TypeLibDesc
TypeLibName VersionComments
VersionCompany VersionCopyright
VersionDescription VersionLanguage
VersionNumber VersionProduct
VersionTrademarks Visible
Methoden  
Build CleanUp
Refresh SetMain

Das ProjectHook-Objekt

Bei einem ProjectHook-Objekt handelt es sich um eine Visual FoxPro-Basisklasse, die standardmäßig instanziiert wird, wenn ein diesem ProjektHook-Objekt zugewiesenes Projekt geöffnet wird. (Sie können die NOPROJECTHOOK-Klausel zu CREATE PROJECT und MODIFY PROJECT hinzunehmen, um zu verhindern, dass ein ProjectHook-Objekt für das Projekt instanziiert wird.)

Das ProjectHook-Objekt ermöglicht den programmgesteuerten Zugriff auf Ereignisse, die in einem Projekt eintreten. Beispielsweise können Sie immer dann, wenn eine Datei zu einem Projekt hinzugefügt wird, Code ausführen. Dieses optionale Objekt unterscheidet sich vom Projektobjekt, das sämtliche Eigenschaften und Methoden enthält, die im Dialogfeld Projektinformation verfügbar sind.

Für neue Projekte können Sie auf der Registerkarte Projekte des Dialogfeldes Optionen eine Projektklasse als Standard-ProjectHook-Klasse spezifizieren. Wird auf dieser Registerkarte keine Projektklasse spezifiziert, so wird neuen Projekten keine ProjectHook-Klasse zugewiesen. Im Dialogfeld Projektinformation können Sie für ein individuelles Projekt durch Überschreiben der Projektklasse eine ProjectHook-Klasse spezifizieren. Zur Laufzeit können Sie mit Hilfe der ProjectHook-Eigenschaft eine Projekthook-Klasse für ein Projekt angeben. Wenn Sie die ProjectHook-Klasse eines Projekts ändern, wird die neue ProjectHook-Klasse erst dann gültig und aktiv, wenn das Projekt geschlossen und wieder neu geöffnet wurde.

Ein ProjectHook-Objekt verfügt über die folgenden Eigenschaften, Ereignisse und Methoden:

Eigenschaften  
BaseClass Class
ClassLibrary Comment
Name OLEDropEffects
OLEDropHasData OLEDropMode
Parent ParentClass
Tag  
Ereignisse  
AfterBuild BeforeBuild
Destroy Error
Init OLEDragDrop
OLEDragOver OLEGiveFeedBack
QueryAddFile QueryModifyFile
QueryRemoveFile QueryRunFile
Methoden  
AddProperty ReadExpression
ReadMethod ResetToDefault
SaveAsClass WriteExpression

Interaktion zwischen Projektobjekt und ProjectHook-Objekt

Wenn Sie den Projekt-Manager aus dem Menü Datei oder durch einen der Befehle CREATE PROJECT oder MODIFY PROJECT öffnen, wird das Projekt-Manager-Fenster angezeigt und ein Projektobjekt samt dem zugehörigen ProjectHook-Objekt instanziiert. Projekterstellungsbefehle (BUILD PROJECT, BUILD APP, BUILD DLL und BUILD EXE) instanziieren ebenfalls Projektobjekt und ProjectHook-Objekt.

Tritt in einem Projekt ein Ereignis auf, so gibt das Projektobjekt das Ereignis an das ProjectHook-Objekt weiter. Der Benutzercode für das Ereignis im ProjectHook-Objekt wird ausgeführt und die Steuerung wieder zurück an das Projektobjekt übertragen. Der dem Projektobjekt vom ProjectHook-Objekt zurückgegebene Wert bestimmt, ob das Projektobjekt die Ausführung beendet. Enthält der Ereigniscode NODEFAULT, so verhindert dies die Ausführung der Standardaktion. Enthält beispielsweise das QueryAddFile-Ereignis NODEFAULT, so verhindert dies das erfolgreiche Hinzufügen einer Datei zu einem Projekt.

Files-Auflistung

Die Dateiauflistung bietet direkten Zugriff auf ein Dateiobjekt; sie gestattet Ihnen die Änderung von Dateiobjekten eines offenen Projekts. Wie bei anderen OLE-Auflistungen können Sie der Dateiauflistung Informationen zu einer Datei in einem Projekt entnehmen. So verwendet beispielsweise der folgende Code die Eigenschaften Count und Item der Files-Auflistung, um die Namen aller Dateien der Files-Auflistung anzuzeigen. Anschließend wird die gleiche Information mit Hilfe des FOR EACH-Befehls angezeigt:

nFileCount = Application.ActiveProject.Files.Count

FOR nCount = 1 TO nFileCount
   ? Application.ActiveProject.Files.Item(nCount).Name
NEXT

FOR EACH oProj IN Application.ActiveProject.Files
   ? oProj.Name
ENDFOR

Die folgende Codezeile verwendet die ActiveProject-Eigenschaft, um zum derzeit aktiven Projekt ein Programm (Main.prg) hinzuzufügen:

Application.ActiveProject.Files.Add('Main.prg')

Die folgende Codezeile fügt Main.prg zu dem ersten der Projects-Auflistung hinzugefügten Projekt hinzu:

Application.Projects[1].Files.Add('Main.prg')

Die Dateiauflistung verfügt über die folgenden Eigenschaften und Methoden:

Eigenschaften  
Count  
Methoden  
Add  
Item  

File-Objekt

Das File-Objekt erlaubt Ihnen die Manipulation individueller Dateien in einem Projekt.

Ein File-Objekt verfügt über die folgenden Eigenschaften und Methoden:

Eigenschaften  
CodePage Description
Exclude FileClass
FileClassLibrary LastModified
Name ReadOnly
SCCStatus Type
Methoden  
AddToSCC CheckIn
CheckOut GetLatestVersion
Modify Remove
RemoveFromSCC Run
UndoCheckOut  

Servers-Auflistung

Die Servers-Auflistung bietet direkten Zugriff auf ein Server-Objekt; sie gestattet Ihnen die Änderung der in einem Projekt enthaltenen Server. Sobald eine DLL-Datei (Dynamic Link Library) oder EXE-Datei (ausführbare Datei), die einen Automatisierungsserver enthält, aus dem Projekt erzeugt wird, wird zu der Servers-Auflistung ein Server-Objekt hinzugefügt. Weitere Informationen zum Erstellen von Automatisierungsservern finden Sie unter Erstellen von Automatisierungsservern in Freigeben von Informationen und Hinzufügen von OLE.

Eine Servers-Auflistung verfügt über die folgende Eigenschaft und Methode:

Eigenschaften  
Count  
Methoden  
Item  

Serverobjekt (Server)

Das Server-Objekt ermöglicht Ihnen das Ermitteln von Informationen (einschließlich Typenbibliotheksinformationen) über die in einem Projekt enthaltenen Automatisierungsserver. Diese Informationen sind ebenfalls auf der Registerkarte Server des Dialogfeldes Projektinformationen verfügbar. Beachten Sie, dass ein Server-Objekt erst dann erstellt wird, wenn das die OLEPUBLIC-Klasse (durch den DEFINE CLASS-Befehl spezifiziert) enthaltende Projekt erstellt wird.

Ein Server-Objekt verfügt über die folgenden Eigenschaften:

Eigenschaften  
CLSID Description
HelpContextID Instancing
ProgID ServerClass
ServerClassLibrary  

Siehe auch

Projekt-Manager-Hooks | Architektur des Projektobjekts | Ausführen des Beispiels für Projekt-Manager-Hooks | Anwendungsentwicklung und Entwicklerproduktivität | Anwendungsobjekt