Agregar objetos OLE a sus aplicaciones

Puede agregar objetos OLE a tablas y formularios de forma interactiva o mediante programación.

Agregar objetos OLE a tablas

Cuando diseñe las tablas para la aplicación, considere si necesita objetos OLE en las tablas. Por ejemplo, suponga que tiene una tabla de productos y desea incluir documentos de Word que contengan descripciones con formato de los productos que se envían a los posibles clientes. Para incluir los documentos de Word, tiene que definir un campo General en la tabla. Luego, agregue los documentos a la tabla mediante vinculación o incrustación de dichos documentos en el campo General.

Para agregar un objeto OLE a una tabla

  1. Use el Diseñador de tablas para crear una tabla con el campo General.

  2. Abra la ventana correspondiente al campo General; para ello, examine la tabla y haga doble clic en el campo General o utilice el comando MODIFY GENERAL.

  3. En el menú Edición, elija Insertar objeto.

    –O bien–

Agregar objetos OLE a tablas

Puede agregar objetos OLE a tablas mediante el comando APPEND GENERAL. Con este comando puede importar un objeto OLE de un archivo y colocarlo en un campo General. Si el campo ya contiene un objeto, el nuevo objeto lo reemplazará.

Nota   A diferencia de APPEND y APPEND BLANK, APPEND GENERAL no agrega ningún registro nuevo a la tabla.

Puede utilizar APPEND GENERAL para incrustar objetos OLE o vincular objetos OLE creados por aplicaciones tales como Excel o Word. Estas aplicaciones son compatibles tanto para vincular como para incrustar. Sin embargo, algunas aplicaciones, como por ejemplo Microsoft Graph, tan sólo permiten incrustar.

Suponga que tiene archivos de Microsoft Word que desea almacenar en una tabla de Visual FoxPro. Si la tabla tiene un campo General llamado WordDoc, puede incrustar los documentos mediante el código siguiente:

CREATE TABLE oletable (name c(24), worddoc g)
CD GETDIR()

nFiles = ADIR(aWordFiles, "*.doc")
IF nFiles > 0
   FOR i = 1 to nFiles
      APPEND BLANK
      REPLACE Oletable.Name WITH aWordFiles(i,1)
      APPEND GENERAL WordDoc FROM aWordFiles(i,1)
   ENDFOR
ELSE
   MESSAGEBOX("No Word files found.")
ENDIF

Nota   Este código sólo busca los archivos que terminen en .doc, la extensión estándar empleada por los archivos de Word. Puesto que Microsoft Word y OLE se dan cuenta de este hecho, los archivos se asocian automáticamente con el servidor de Word cuando se utiliza APPEND GENERAL.

Si emplea una extensión diferente de la esperada por el servidor, deberá declarar la clase de servidor mediante la cláusula CLASS. Por ejemplo, si agrega la clase de Word al ejemplo anterior, el código se convierte en:

APPEND GENERAL WordDoc FROM wordfiles(i,1) CLASS "Word.Document.6"

Si tiene archivos con extensiones comunes (por ejemplo, .bmp) que otros servidores pueden utilizar, puede emplear la cláusula CLASS para especificar el servidor que desea usar para esos archivos. O bien, si prefiere vincular objetos en lugar de incrustarlos, utilice la palabra clave LINK, como en el siguiente ejemplo:

APPEND GENERAL WordDoc FROM wordfiles(i,1) LINK CLASS "Word.Document.6"

Además, puede reemplazar datos de un objeto con la palabra clave DATA de APPEND GENERAL, como ilustra el ejemplo siguiente de Microsoft Graph.

Actualización de Microsoft Graph

Microsoft Graph es una aplicación que puede incrustarse. Los valores de un gráfico de Microsoft Graph se basan en los valores de una hoja de datos.

Para cambiar los datos de un gráfico de Microsoft Graph mediante programación, debe crear una cadena que contenga los datos nuevos, incluyendo las tabulaciones, los retornos de carro y los avances de línea, y pasarla a un objeto de Microsoft Graph con la cláusula DATA del comando APPEND GENERAL.

En el ejemplo siguiente se supone que tiene una tabla, denominada stock, con los campos date y close (entre otros) correspondientes a la fecha y al precio de cierre del stock. El objeto de Microsoft Graph se almacena en el campo General msgraph de una tabla denominada graph. El ejemplo actualiza un gráfico con los precios de cierre de stock desde los 30 últimos días.

Código Comentarios
#DEFINE CRLF CHR(13)+CHR(10)
#DEFINE TAB CHR(9)
LOCAL lcData
Define los caracteres de retorno de carro y tabulación.
SELECT date, close;
  FROM Stock WHERE BETWEEN(date, ;
  DATE(),DATE() - 30) ;
  ORDER BY date INTO CURSOR wtemp
Selecciona los valores con los que se desea actualizar el gráfico; en este caso, los valores de fecha y cierre de los stocks correspondientes a los 30 últimos días.
SELECT wtemp
lcData = " " + ;
  TAB + "Closing Price" + CRLF
SCAN 
  lcData = lcData + DTOC(date)
  lcData = lcData + TAB
  lcData = lcData + ;
  ALLTRIM(STR(close)) + CRLF
ENDSCAN
Genera una cadena de caracteres (lcData) de datos desde la posición del cursor para actualizar el gráfico.

"Precio de cierre", como encabezado de la columna, es el texto predeterminado que se mostrará en la leyenda del gráfico.

SELECT graph
APPEND GENERAL msgraph DATA lcData
Envíe los nuevos valores al gráfico en la cláusula DATA del comando APPEND GENERAL.
USE IN wtemp
Cierre el cursor.

Nota   También puede mostrar objetos OLE desde campos de tipo General en los informes.

Agregar objetos OLE a formularios

Con el Diseñador de formularios, puede agregar objetos OLE insertables a formularios mediante el control OLE Container. Además, puede mostrar objetos OLE de los campos de tipo General con el control OLE Bound.

Para agregar un objeto OLE a un formulario

  1. En el Diseñador de formularios, agregue un control OLE Container a su formulario. Aparecerá el cuadro de diálogo Insertar objeto.
  2. En el cuadro de diálogo Insertar objeto, seleccione Crear nuevo o Crear desde archivo.
  3. Elija el objeto OLE apropiado en la lista Tipo de objeto.

Puede personalizar la barra de herramientas Controles de formularios para agregar directamente objetos OLE específicos.

Para agregar objetos OLE a la barra de herramientas Controles de formularios

  1. En el menú Herramientas, elija Opciones.
  2. En la ficha Controles del cuadro de diálogo Opciones, elija Controles ActiveX.
  3. En la lista Seleccionado, elija los objetos OLE y los controles ActiveX que desee dejar disponibles en la barra de herramientas Controles de formularios.
  4. Elija Establecer como predeterminado y, a continuación, Aceptar.
  5. En la barra de herramientas Controles de formularios, elija Ver clases y, a continuación, Controles ActiveX.

Para mostrar un objeto OLE de un campo General

  1. En el Diseñador de formularios, agregue un control OLE Bound a su formulario.

  2. Especifique el campo General que contiene los datos; para ello, establezca la propiedad ControlSource del objeto.

    Por ejemplo, si el nombre de la tabla es Inventory y el nombre del campo General es Current, establezca la propiedad ControlSource como Inventory.Current.

También puede mostrar un objeto OLE de un campo General mediante programación:

Código Comentarios
frm1 = CREATEOBJECT("form")
Crea un formulario
frm1.ADDOBJECT("olb1",
"oleboundcontrol")
Agrega un control
frm1.olb1.ControlSource = 
"Inventory.Current"
Vincula los datos al control
frm1.olb1.Visible = .T.
frm1.Visible = .T.
Deja visibles el control y el formulario

Funcionamiento interactivo con objetos OLE

Si agrega un objeto OLE a un formulario o campo General, puede modificar los datos y mostrar las características del objeto en tiempo de ejecución o durante el diseño.

Nota   No puede modificar los datos de un objeto OLE en un control OLE Bound durante el diseño.

Algunos objetos OLE admiten la modificación directa, por lo que puede modificar el objeto en la ventana utilizada por la aplicación. Por ejemplo, si hace doble clic en un objeto de hoja de cálculo de Microsoft Excel en un campo General, en lugar de iniciar una copia de Microsoft Excel en otra ventana, los títulos de menú cambian para reflejar la estructura de menús de Microsoft Excel y se muestran las barras de herramientas predeterminadas de Microsoft Excel. El programador o el usuario de la aplicación podrá entonces modificar el objeto de Microsoft Excel sin abandonar la aplicación.

Nota   Sólo puede modificar directamente los objetos incrustados, no los vinculados.

También puede abrir el servidor de Automatización en otra ventana, modificar los datos o ver las características en dicha ventana y hacer que los valores nuevos se reflejen en la aplicación cuando vuelva a ella.

Para modificar un objeto OLE directamente en una ventana de campo General

  • En el menú Edición, seleccione el tipo de objeto específico y, en el submenú, elija Modificar.

    Por ejemplo, si el objeto es un documento de Word, seleccione el elemento de menú Objeto documento; si el objeto es un gráfico de Microsoft Graph, seleccione el elemento de menú Objeto gráfico.

    –O bien–

  • Haga doble clic en el objeto.

Para abrir la aplicación para un objeto OLE en una ventana de un campo General

  • En el menú Edición, seleccione el tipo de objeto específico y, en el submenú, elija Abrir.

Agregar un objeto OLE a un formulario en los controles OLE Container u OLE Bound permite tener más control sobre la apertura y modificación del objeto.

Si establece la propiedad AutoActivate de un control OLE Container u OLE Bound, puede determinar si el objeto OLE se abrirá o modificará cuando el control aparezca con el foco o cuando el usuario haga doble clic sobre el control. La propiedad AutoVerbMenu especifica si el menú contextual del control ActiveX permite al usuario abrir o modificar el objeto OLE.

Para controlar el acceso de modo que el objeto OLE sólo pueda abrirse o modificarse mediante programación con el método DoVerb, establezca AutoActivate como 0 - Manual y AutoVerbMenu como falso (.F.).

Controlar los menús

Cuando un usuario modifica directamente un objeto OLE, aparece la barra de menús del objeto OLE y no los menús de la aplicación. Si crea un título de menú y desea que se muestre mientras el usuario modifica un objeto OLE, seleccione Negociar en el cuadro de diálogo Opciones de la acción del Diseñador de menús. Para obtener más información, consulte Diseñar menús y barras de herramientas o la cláusula NEGOTIATE en el tema DEFINE PAD.

Vea también

Agregar un campo General | Diseñar una aplicación OLE | Usar controles ActiveX | Agregar OLE |Diseñador de tablas | MODIFY GENERAL | APPEND GENERAL