Compartir a través de


Jerarquía de objetos de un proyecto

La jerarquía de objetos de un proyecto consta del proyecto, un objeto Project y su objeto ProjectHook asociado. El objeto Project contiene una colección Files, formada por los archivos del proyecto y una colección Servers, formada por los servidores de automatización creados desde el proyecto. En el diagrama siguiente se ilustra la jerarquía de objetos de un proyecto dentro del modelo de objetos de Visual FoxPro:

Projects (Colección)

La colección Projects proporciona acceso directo al objeto Project y así permite manipular el proyecto, y también los archivos y servidores que contiene. A la colección Projects se le agrega un objeto Project siempre que se crea o se abre un proyecto, o cuando se genera un .app, .dll o .exe desde él.

Al igual que ocurre con otras colecciones OLE, es posible obtener información acerca de un proyecto a partir de la colección Projects. Por ejemplo, el código siguiente utiliza las propiedades Count e Item de la colección Projects para mostrar los nombres de todos los proyectos de la colección Projects y, a continuación, utiliza el comando FOR EACH para mostrar la misma información:

nProjectCount = Application.Projects.Count

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

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

Esta línea de código utiliza la propiedad ActiveProject para agregar un programa, Main.prg, al proyecto activo actualmente:

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

Esta línea de código agrega Main.prg al primer proyecto agregado a la colección Projects:

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

La colección Projects tiene la propiedad y el método siguientes:

Propiedades  
Count  
Métodos  
Item  

Project (Objeto)

Se crea una instancia del objeto Project siempre que se abre un proyecto desde el menú Archivo o con los comandos CREATE PROJECT, MODIFY PROJECT, BUILD APP, BUILD DLL, BUILD EXE o BUILD PROJECT. El objeto Project permite manipular el proyecto mediante programa y es posible el acceso al mismo a través del objeto Application de Visual FoxPro. Observe que el objeto Application cuenta con la nueva propiedad ActiveProject, que proporciona una referencia de objeto al proyecto abierto en el Administrador de proyectos activo actualmente.

El objeto Project tiene las propiedades y métodos siguientes:

Propiedades  
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
Métodos  
Build CleanUp
Refresh SetMain

ProjectHook (Objeto)

Un objeto ProjectHook es una clase de base de Visual FoxPro cuya instancia se crea de forma predeterminada siempre que se abre un proyecto asignado al objeto ProjectHook. (Puede incluir la cláusula NOPROJECTHOOK en CREATE PROJECT y MODIFY PROJECT para evitar que se cree una instancia de un objeto ProjectHook para el proyecto.)

El objeto ProjectHook permite el acceso mediante programación a los eventos que ocurren en un proyecto. Por ejemplo, puede ejecutar código siempre que agregue un archivo a un proyecto. Este objeto opcional difiere del objeto Project, que contiene todas las propiedades y métodos disponibles en el cuadro de diálogo Información del proyecto.

Puede especificar una clase ProjectHook predeterminada para los nuevos proyectos en la ficha Proyectos del cuadro de diálogo Opciones. Si no se especifica una clase ProjectHook predeterminada en la ficha Proyectos, no se asignará ninguna clase de este tipo a los proyectos nuevos. Puede especificar una clase ProjectHook para un proyecto individual (anulando la predeterminada) en el cuadro de diálogo Información del proyecto. En tiempo de ejecución, puede utilizar la propiedad ProjectHook para especificar una clase ProjectHook para un proyecto. Si cambia la clase ProjectHook de un proyecto, la nueva clase no tendrá efecto hasta que cierre el proyecto y lo abra de nuevo.

El objeto ProjectHook tiene las propiedades, eventos y métodos siguientes:

Propiedades  
BaseClass Class
ClassLibrary Comment
Name OLEDropEffects
OLEDropHasData OLEDropMode
Parent ParentClass
Tag  
Eventos  
AfterBuild BeforeBuild
Destroy Error
Init OLEDragDrop
OLEDragOver OLEGiveFeedBack
QueryAddFile QueryModifyFile
QueryRemoveFile QueryRunFile
Métodos  
AddProperty ReadExpression
ReadMethod ResetToDefault
SaveAsClass WriteExpression

Interacción entre los objetos Project y ProjectHook

Al abrir el Administrador de proyectos desde el menú Archivo o con los comandos CREATE PROJECT o MODIFY PROJECT, aparecerá la ventana del Administrador de proyectos y se creará una instancia de un objeto Project con su objeto ProjectHook asociado. Los comandos de generación de proyectos (BUILD PROJECT, BUILD APP, BUILD DLL y BUILD EXE) también crean instancias de los objetos Project y ProjectHook.

Cuando se produce un evento en un proyecto, el objeto Project envía el evento al objeto ProjectHook. Entonces se ejecuta el código de usuario del evento en el objeto ProjectHook y el control se devuelve al objeto Project. El valor devuelto al objeto Project desde el objeto ProjectHook determina si el objeto Project termina la operación. Si incluye NODEFAULT en el código del evento, evitará que se realice la acción predeterminada. Por ejemplo, al agregar NODEFAULT al evento QueryAddFile se impide que se agregue correctamente un archivo al proyecto.

Files (Colección)

La colección Files proporciona acceso directo al objeto File, lo que permite manipular los objetos File de un proyecto mientras éste está abierto. Al igual que ocurre con otras colecciones OLE, es posible obtener información acerca de un archivo de un proyecto a partir de la colección Files. Por ejemplo, en el código siguiente se utilizan las propiedades Count e Item de la colección Files para mostrar los nombres de todos los archivos de la colección y, a continuación, se utiliza el comando FOR EACH para mostrar la misma información:

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

Esta línea de código utiliza la propiedad ActiveProject para agregar un archivo, Main.prg, al proyecto activo actualmente:

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

Esta línea de código agrega Main.prg al primer proyecto agregado a la colección Projects:

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

La colección Files tiene las propiedades y métodos siguientes:

Propiedades  
Count  
Métodos  
Add  
Item  

File (Objeto)

El objeto File permite manipular los archivos individuales de un proyecto.

El objeto File tiene las propiedades y métodos siguientes:

Propiedades  
CodePage Description
Exclude FileClass
FileClassLibrary LastModified
Name ReadOnly
SCCStatus Type
Métodos  
AddToSCC CheckIn
CheckOut GetLatestVersion
Modify Remove
RemoveFromSCC Run
UndoCheckOut  

Servers (Colección)

La colección Servers ofrece acceso directo al objeto Server, lo que permite manipular los servidores que contiene un proyecto. Se agrega un objeto Server a la colección Servers siempre que se genera a partir del proyecto un archivo de biblioteca de vínculos dinámicos (.dll) o ejecutable (.exe) que contiene un archivo de automatización. Para obtener información acerca de la creación de servidores de automatización, consulte Crear servidores de automatización en Agregar OLE.

La colección Servers tiene la propiedad y el método siguientes:

Propiedades  
Count  
Métodos  
Item  

Server (Objeto)

El objeto Server permite determinar información (incluida información de biblioteca de tipos) acerca de los servidores de automatización contenidos en un proyecto. Esta información también está disponible en la ficha Servidores del cuadro de diálogo Información del proyecto. Observe que el objeto Server no se crea hasta que se genera el proyecto que contiene la clase OLEPUBLIC (especificada en el comando DEFINE CLASS).

El objeto Server tiene las propiedades y métodos siguientes:

Propiedades  
CLSID Description
HelpContextID Instancing
ProgID ServerClass
ServerClassLibrary  

Vea también

Enlaces del Administrador de proyectos | Arquitectura del objeto Project | Ejecutar el ejemplo de enlaces del Administrador de proyectos | Desarrollo de aplicaciones y productividad de los programadores | Application (Objeto)