Compartir a través de


Arquitectura del objeto Project

El objeto Project de Visual FoxPro expone una interfaz IDispatch para que los clientes de automatización, los controles ActiveX y otros objetos COM tengan acceso a él a través de interfaces OLE estándar. Puesto que el objeto Project expone una interfaz IDispatch, los errores que puedan generarse al manipular proyectos serán errores OLE.

Mejoras del lenguaje

Existen dos nuevas cláusulas para los comandos CREATE PROJECT y MODIFY PROJECT. La primera, NOPROJECTHOOK, evita que se cree una instancia del objeto ProjectHook para un proyecto. La segunda, NOSHOW, abre el proyecto sin mostrarlo en el Administrador de proyectos, lo que permite manipular el proyecto mediante programación sin mostrarlo. Puede utilizar la propiedad Visible para mostrar posteriormente el Administrador de proyectos. Si desea más información acerca de estas nuevas cláusulas, vea CREATE PROJECT y MODIFY PROJECT.

Eventos de proyecto

En las secciones siguientes se describen los eventos que ocurren cuando se crean, se modifican, se cierran, se generan proyectos, etcétera, y también el orden en que se producen.

Crear un nuevo proyecto

Los eventos siguientes se producen al ejecutar CREATE PROJECT, al crear un nuevo proyecto desde el menú Archivo o al hacer clic en el botón Nuevo de la barra de herramientas y especificar la creación de un proyecto nuevo:

  1. Se crea el objeto Project.

  2. Se crea una instancia del objeto ProjectHook.

  3. Se produce el evento Init del objeto ProjectHook. Si el evento Init devuelve verdadero (.T.), que es el valor predeterminado, el proyecto se crea y se muestra en el Administrador de proyectos.

    Si el evento Init devuelve falso (.F.), el proyecto no se crea, se liberan los objetos Project y ProjectHook y no se muestra el Administrador de proyectos.

Modificar un proyecto existente

Los eventos siguientes se producen al ejecutar MODIFY PROJECT, al modificar un proyecto existente desde el menú Archivo o al hacer clic en el botón Abrir de la barra de herramientas y especificar un proyecto nuevo o ya existente:

  1. Se crea el objeto Project. El objeto Project obtiene sus valores del archivo .pjx del proyecto.

  2. Se crea una instancia del objeto ProjectHook.

  3. Se produce el evento Init del objeto ProjectHook. Si el evento Init devuelve verdadero (.T.) (el valor predeterminado), el proyecto se abre para su modificación en el Administrador de proyectos.

    Si el evento Init devuelve falso (.F.), el proyecto no se abre para su modificación, se liberan los objetos Project y ProjectHook, y no se muestra el Administrador de proyectos.

Cerrar un proyecto

Los eventos siguientes se producen al cerrar un proyecto abierto:

  1. Se produce el evento Destroy del objeto ProjectHook y se libera el objeto ProjectHook.
  2. Se libera el objeto Project.

Ejecutar BUILD APP, BUILD DLL o BUILD EXE

Los eventos siguientes se producen cuando se ejecuta BUILD APP, BUILD DLL o BUILD EXE:

  1. Se crea el objeto Project. El objeto Project obtiene sus valores del archivo .pjx del proyecto.

  2. Se crea una instancia del objeto ProjectHook.

  3. Se produce el evento Init del objeto ProjectHook. Si el evento Init devuelve verdadero (.T.), que es el valor predeterminado, se produce el evento BeforeBuild del objeto ProjectHook. Si se ha especificado NODEFAULT en el evento BeforeBuild, el archivo .app, .dll o .exe no se genera. En caso contrario, el proceso de generación continúa.

    Si se agrega algún archivo al proyecto durante el proceso de generación, se producirá el evento QueryAddFile del objeto ProjectHook antes de agregar efectivamente el archivo. Si se ha especificado NODEFAULT en el evento QueryAddFile, no se agregará el archivo al proyecto. En caso contrario, el archivo se agrega. Cuando se ha generado correctamente el archivo .app, .dll o .exe, se produce el evento AfterBuild del objeto ProjectHook y, a continuación, el evento Destroy de dicho objeto.

    Si el evento Init devuelve falso (.F.), el archivo .app, .dll o .exe no se genera, y se liberan los objetos Project y ProjectHook.

Ejecutar BUILD PROJECT

Los eventos siguientes se producen al ejecutar BUILD PROJECT con la cláusula FROM. Si se omite la cláusula FROM, los eventos se producen en el orden descrito anteriormente para la ejecución de BUILD APP, BUILD DLL o BUILD EXE.

  1. Se crea el objeto Project. El objeto Project obtiene sus valores del archivo .pjx del proyecto.

  2. Se crea una instancia del objeto ProjectHook.

  3. Se produce el evento Init del objeto ProjectHook. Si el evento Init devuelve verdadero (.T.), que es el valor predeterminado, los archivos especificados en la cláusula FROM se agregan individualmente al proyecto. El evento QueryAddFile del objeto ProjectHook se produce antes de agregar cada uno de los archivos al proyecto. Si se ha especificado NODEFAULT en el evento QueryAddFile, el archivo no se agregará al proyecto. En caso contrario, el archivo se agrega.

    A continuación se produce el evento BeforeBuild del objeto ProjectHook. Si se ha especificado NODEFAULT en el evento BeforeBuild, el proyecto no se generará. En caso contrario, el proyecto se genera.

  4. Cuando termina la generación del proyecto, se produce el evento AfterBuild del objeto ProjectHook y, a continuación, tiene lugar el evento Destroy de dicho objeto.

    Si el evento Init del objeto ProjectHook devuelve falso (.F.), el proyecto no se genera. En tal caso se liberan los objetos Project y ProjectHook, y no se crea un nuevo archivo .pjx.

Realizar una operación de arrastrar y colocar

Los eventos siguientes se producen al arrastrar un archivo o un conjunto de archivos sobre la sección de esquema (árbol) del Administrador de proyectos:

  1. Cuando el puntero del mouse se sitúa sobre la sección de esquema del Administrador de proyectos, se produce el evento OLEDragOver del objeto ProjectHook, con el valor 0 (DRAG_ENTER en Foxpro.h) en el parámetro nState. A continuación se produce el evento OLEDragOver repetidamente con el valor 2 (DRAG_OVER en Foxpro.h) en el parámetro nState. Si el puntero del mouse se desplaza fuera de la sección de esquema del Administrador de proyectos, se produce el evento OLEDragOver con el valor 1 (DRAG_LEAVE en Foxpro.h) en el parámetro nState.
  2. El evento OLEDragDrop del objeto ProjectHook se produce al soltar el botón del mouse cuando el puntero se encuentra sobre la sección de esquema del Administrador de proyectos. De forma predeterminada, Visual FoxPro agrega al proyecto todos los archivos colocados en el Administrador de proyectos. El evento QueryAddFile del objeto ProjectHook se produce antes de agregar cada uno de los archivos al proyecto.

Agregar un archivo con el botón Agregar

Los eventos siguientes se producen al agregar un archivo a un proyecto con el botón Agregar del Administrador de proyectos:

  1. Aparece el cuadro de diálogo Abrir.
  2. Si selecciona un archivo y elige Aceptar, se creará un objeto File para el archivo seleccionado.
  3. Se produce el evento QueryAddFile del objeto ProjectHook y se pasa al evento el nombre del objeto File. Si se ha especificado NODEFAULT en el evento QueryAddFile, el archivo no se agregará al proyecto. En caso contrario, el archivo se agrega.

Agregar un archivo con el botón Nuevo

Los eventos siguientes se producen al agregar un archivo nuevo a un proyecto con el botón Nuevo del Administrador de proyectos:

  1. Aparece el diseñador o editor correspondiente al archivo.
  2. Cuando se guarda el nuevo archivo, aparece el cuadro de diálogo Guardar como. Al hacer clic en Guardar se crea un objeto File para el nuevo archivo.
  3. Se produce el evento QueryAddFile del objeto ProjectHook y se pasa al evento el nombre del objeto File. Si se ha especificado NODEFAULT en el evento QueryAddFile, el archivo no se agregará al proyecto. En caso contrario, el archivo se agrega.

Modificar un archivo con el botón Modificar

Los eventos siguientes se producen al modificar un archivo de un proyecto con el botón Modificar del Administrador de proyectos:

  1. Se produce el evento QueryModifyFile del objeto ProjectHook antes de que se muestre el diseñador o editor correspondiente al archivo.
  2. Se pasa como parámetro al evento QueryModifyFile el objeto File del archivo que se va a modificar. Si se ha incluido NODEFAULT en el evento QueryModifyFile, no se muestra el diseñador o editor correspondiente al archivo y el archivo no se modifica. En caso contrario, el archivo se abre con el diseñador o editor correspondiente para su modificación.

Quitar un archivo con el botón Quitar

Los eventos siguientes se producen al quitar un archivo de un proyecto con el botón Quitar del Administrador de proyectos:

  1. Se produce el evento QueryRemoveFile del objeto ProjectHook.
  2. El objeto File correspondiente al archivo que se va a quitar se pasa como parámetro al evento QueryRemoveFile. Si se ha especificado NODEFAULT en el evento QueryRemoveFile, el archivo no se quita del proyecto. En caso contrario, el archivo se quita del proyecto.

Ejecutar un archivo con el botón Ejecutar

Los eventos siguientes se producen al ejecutar un archivo de un proyecto con el botón Ejecutar del Administrador de proyectos:

  1. Se produce el evento QueryRunFile del objeto ProjectHook.
  2. El objeto File correspondiente al archivo que se va a ejecutar se pasa como parámetro al evento QueryRunFile. Si se ha especificado NODEFAULT en el evento QueryRunFile, el archivo no se ejecuta. En caso contrario, se ejecuta.

Volver a generar un proyecto o generar un archivo con el botón Generar

Los eventos siguientes se producen al volver a generar un proyecto, o al generar un archivo .app, .dll o .exe desde un proyecto con el botón Generar del Administrador de proyectos:

  1. Aparece el cuadro de diálogo Opciones para generar.
  2. Puede elegir Volver a generar el proyecto, Generar aplicación, Generar ejecutable o Generar DLL COM y luego especificar opciones de generación adicionales. Si hace clic en Cancelar, la generación no se produce.
  3. El evento BeforeBuild del objeto ProjectHook se produce al elegir Aceptar, y entonces comienza el proceso de generación.
  4. Al completarse la generación, se produce el evento AfterBuild del objeto ProjectHook.

Vea también

Jerarquía de objetos de un proyecto | Ejecutar el ejemplo de enlaces del Administrador de proyectos | Desarrollo de aplicaciones y productividad de los programadores