Existen muchos escritos sobre como automatizar aplicaciones como Excel, Word, Outlook, etc. desde Visual FoxPro como cliente de automatización, pero quizás algo que muchos desconozcan, es que Visual FoxPro también es un servidor de automatización. ¿Que quiero decir con esto?. Que cualquier aplicación que permita automatización puede crear una instancia de Visual FoxPro y ejecutar comandos de Visual FoxPro.
Comenzar con lo conocido
Para comenzar utilizaremos a Visual FoxPro como cliente, como lo hicimos ya muchas veces, y crearemos una nueva instancia de Visual FoxPro con la siguiente sentencia:
loVFP = CREATEOBJECT("VisualFoxPro.Application")Una vez creado el objeto Application de Visual FoxPro, con la ayuda de IntelliSense, una ventana emergente nos mostrará las Propiedades y los Métodos de este objeto al escribir lo siguiente:
loVFP.Si en la PC tenemos instaldas mas de una versión de Visual FoxPro, podemos especificar cual versión vamos a instanciar, como lo muestra el siguiente código:
*-- Visual FoxPro 9.0 loVFPx = CREATEOBJECT("VisualFoxPro.Application.9") ? loVFPx.Version loVFPx.Quit *-- Visual FoxPro 8.0 loVFPx = CREATEOBJECT("VisualFoxPro.Application.8") ? loVFPx.Version loVFPx.Quit *-- Visual FoxPro 7.0 loVFPx = CREATEOBJECT("VisualFoxPro.Application.7") ? loVFPx.Version loVFPx.Quit *-- Visual FoxPro 6.0 loVFPx = CREATEOBJECT("VisualFoxPro.Application.6") ? loVFPx.Version loVFPx.Quit
Conocer los métodos y las propiedades
Algunos de los métodos disponibles del objeto Application de Visual Fox y que podemos ejecutar son:
- DoCmd
loVFP.DoCmd("USE (HOME(2)+'Northwind\Customers')")
- Eval
? loVFP.Eval("CompanyName")
- SetVar
loVFP.SetVar("lcNombre","PortalFox") ? loVFP.Eval("lcNombre")
- RequestData
laArray = loVFP.RequestData("Customers",2) DISPLAY MEMORY LIKE laArray
- DataToClip
loVFP.DataToClip("Customers",2,3) ? ClipText
- Quit
loVFP.QuitAlgunas de la propiedades del objeto Application de VFP y que podemos consultar o modificar son:
? loVFP.Version ? loVFP.StartMode loVFP.Caption = "Instanciado de otra aplicacion" loVFP.Visible = .T.La variable del sistema _VFP hace referencia al objeto aplicación de la instancia actual de Visual FoxPro, y podemos ejecutar sus métodos y modificar sus propiedades:
_VFP.Caption = "Instancia Actual de VFP" _VFP.DoCmd("_Screen.BackColor = RGB(255,255,192)") ? _VFP.Version
Instanciando Visual FoxPro desde Excel
El siguiente ejemplo, nos muestra como podemos crear una instancia de Visual FoxPor desde Excel, abrir una tabla, e importar sus datos en una hoja de Excel.
Copie el siguiente código escrito en VBA (Visual Basic for Applications), insertelo en un módulo de Excel y ejecutelo:
Sub ImportarDeVFP() Dim loVFP As Object, lnReg As Integer Set loVFP = CreateObject("VisualFoxPro.Application") loVFP.DoCmd ("OPEN DATABASE (HOME(2)+'Northwind\Northwind')") loVFP.DoCmd ("SELECT * FROM Customers INTO CURSOR MiCursor") lnReg = loVFP.DataToClip("MiCursor", , 3) Range("A1").Select ActiveSheet.Paste Cells.Select Cells.EntireColumn.AutoFit loVFP.Quit Set loVFP = Nothing MsgBox (lnReg & " Registros copiados") End Sub
Para terminar
Con este último ejemplo podemos ver que a veces es mas simple programar otra aplicación para controlar a Visual FoxPro y obtener datos, que hacerlo todo desde Visual FoxPro. Uds. verán el camino a tomar para dar solución a los requerimientos de los usuarios.
Hasta la próxima.
Luis María Guayán
Es posible tener acceso a las propiedades y métodos de una aplicación vfp desde otra aplicación vfp?, por ejemplo, cambiar el título de un formulario de la aplicación1 desde la aplicación2
ResponderBorrar