ActiveX, COM y OLE en apps Xojo

ActiveX, COM y OLE en Xojo

ActiveX describe controles que utilizan COM y OLE. OLE (Object Linking and Embedding) y COM (Component Object Model) suponen las formas de comunicar con objetos Windows desde tus aplicaciones Xojo.

Puedes utilizar las clases OLEObject, OLEContainer, OLEParameter y OLEException para acceder a estas capacidades de Windows.

OLEObject

Puedes utilizar OLEObject para enviar mensajes a otras aplicaciones Windows que soporten OLE, como puede ser por ejemplo el caso de Internet Explorer. Utiliza el método Value para obtener y también definir los valores del objeto OLE. Utiliza el método Invoke para realizar las llamadas a los métodos (con o sin argumentos) sobre un objeto OLE.

Este código crea una conexión a Internet Explorer y le indica que muestre la Wikipedia:

Dim obj As OLEObject
Dim v As Variant
Dim params(1) As Variant
obj = OLEObject("InternetExplorer.Application", True)
obj.Value("Visible") = True
params(1) = "http://www.wikipedia.org"
v = obj.Invoke("Navigate", params)
Exception e As OLEException
  MsgBox(e.message)

OLEContainer

Se utiliza OLEContainer para embeber (empotrar) controles ActiveX en tus aplicaciones Xojo.

Para usar un OLEContainer, has de arrastrarlo desde la Librería sobre la Ventana de tu proyecto Xojo. Indica en la propiedad ProgramID del Inspector el ID de programa para el control.

Puedes acceder a las propiedades y métodos del ActiveX utilizando la propiedad Content, la cual devolverá un OLEObject sobre el que podrás usar los métodos Value e Invoke.

Este código en un Botón, muestra un PDF en un Adobe Reader ActiveX OLEContainer que se ha añadido a la ventana:

PDFContainer.Content.Value("Src") = "C:\Document.pdf"

En función de la versión de Adobe Reader, es posible que debas de hacer un clic sobre el container antes de que se muestre el PDF.

Para imprimir el PDF en el OLEContainer, puedes llamar al método “printWithDialog” del control Adobe Reader ActiveX:

PDFContainer.Content.Invoke("printWithDialog"

Usar Insert ActiveX Component

También puedes añadir directamente controles ActiveX y objetos automatizables/OLE seleccionando Insert > ActiveX Componente desde el menú. Esta acción muestra una ventana con dos pestañas: Controles y References. La pestaña Controls muestra todos los controles ActiveX que puedes añadir a la ventana. La pestaña References muestra los objetos COM automatizables que no son controles, como pueda ser el caso de iTunes Library, Microsoft Word, etc.

Insertar componente ActiveX COM a Xojo

Cuando seleccionas un elemento y pulsas sobre OK, Xojo añadirá un módulo al proyecto en el que se incluiran las clases del componente, listo para usar. Consulta la documentación del componente para entender cómo has de utilizar sus clases, métodos y propiedades.

Javier Rodriguez

Consultor, desarrollador y formador con más de 25 años de experiencia. Reconocido experto en el mundo Apple, autor de varios libros sobre tecnología. Si tienes un proyecto o necesitas ayuda, ¡ponte en contacto conmigo!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*