FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Incrustar otra aplicaci贸n
Posts: 166
Joined: Mon Dec 12, 2005 09:56 AM
Incrustar otra aplicaci贸n
Posted: Tue Mar 01, 2011 05:45 PM

Hola, a ver si alguien me puede ayudar.

Estoy haciendo una aplicaci贸n que necesita tener un control exaustivo sobre excel. Cosas como quitar parte de los men煤s de Excel, a帽adirles otros nuevos, cargarle un fichero xla con multitud de funciones escritas en VB, etc. Mi aplicaci贸n se encarga de todo lo referente a abrir, guardar y cerrar los libros.

El caso es que ya tengo todo hecho y funcionando, pero necesito que excel se abra dentro de la ventana de mi aplicaci贸n y no como una ventana independiente.

He intentado con ActiveX pero no lo he conseguido (entre otras cosas necesito un objeto Excel.Application y no un OWC11.Spreadsheet).

Al final he intentado as铆:

hWndexcel := FindWindow(0,"Microsoft Excel - "+cfilenopath(clibro))
SetParent(hwndexcel,oWnd:hWnd) // Muestra Excel en la ventana de mi aplicaci贸n

Con esto excel permanece dentro de la ventana de mi aplicaci贸n, pero los dialogos que deber铆a desplegar excel cuando se selecciona alguna opci贸n de su men煤, no se muestran y en su lugar la ventana excel se queda parpadeando, la opci贸n del men煤 de excel seleccionada en naranja y excel deja de responder. Excel lo manejo con OLE.

Mi pregunta es si esto es posible o estoy desvariando.

Posts: 166
Joined: Mon Dec 12, 2005 09:56 AM
Re: Incrustar otra aplicaci贸n
Posted: Wed Mar 02, 2011 05:13 PM

Pues nada, ya lo he solucionado:

oexcelsolver :=CreateObject( "Excel.Application" )
oexcelsolver:Workbooks:Open(clibro)
sysrefresh()
oexcelsolver:Visible(.t.)
hWndexcel := FindWindow(0,"Microsoft Excel - "+cfilenopath(clibro))
SetParent(hwndexcel,oWnd:hWnd)

Con CreateOleObject("Excel.Application") no funcionaban las opciones en las que excel abre un dialogo y se quedaba colgado, entre ellas mis funciones.
As铆 funciona bien y excel no se sale de la ventana de mi aplicaci贸n.

Saludos

Posts: 166
Joined: Mon Dec 12, 2005 09:56 AM
Re: Incrustar otra aplicaci贸n
Posted: Fri Mar 04, 2011 03:00 PM

Por si alguien est谩 interesado, despu茅s de repasar todo un poco ha quedado as铆:

oexcelsolver := CreateObject( "Excel.Application" )
oexcelsolver:WorkBooks:Open(clibro)
sysrefresh()
SetWinLonA(oexcelsolver:hWnd,-16,"L") //Es la funci贸n API SetWindowLongA, en este caso quita la barra de titulo de excel
SetForeWin(oexcelsolver:hWnd) //Es la funcion API SetForegroundWindow tiene que ir antes de la llamada a setparent()
SetParent(oexcelsolver:hWnd,oWnd:hWnd) //Incrusta Excel en mi ventana

oWnd:SetText( cverotc + ' - Libro abierto: '+clibro )
oexcelsolver:ActiveWorkBook:Protect('',.f.,.f.) //Para poder manupilar el estado de la venta del libro
oexcelsolver:WindowState(-4137) //Se quitan los botones de maximizar, minimizar y cerrar
oexcelsolver:Windows(1):WindowState(-4137) //Se maximiza Excel en mi ventana
oexcelsolver:Visible(.t.) //Hace Excel visible

Con esto el resultado es el que deber铆a tener con TActiveX, pero con esa clase no he conseguido hacer rular Excel sin errores.

Posts: 880
Joined: Fri Jan 12, 2007 08:35 PM
Re: Incrustar otra aplicaci贸n
Posted: Sat Mar 05, 2011 05:11 PM

Muchas gracias Sebasti谩n se ve muy interesante :mrgreen:

Saluditos :wink:

Que es mejor que programar? creo que nada :)
Atropellada pero aqui ando :P

I love Fivewin

s茅蕦菨晒 谉蓯 蓯蕠s菨 opun莎 菨蕠s菨
Posts: 187
Joined: Mon Oct 20, 2008 06:33 PM
Re: Incrustar otra aplicaci贸n
Posted: Fri Apr 15, 2011 01:16 PM

Donde encontro las funciones:
SetWinLonA(oexcelsolver:hWnd,-16,"L") //Es la funci贸n API SetWindowLongA, en este caso quita la barra de titulo de excel
SetForeWin(oexcelsolver:hWnd) //Es la funcion API SetForegroundWindow tiene que ir antes de la llamada a setparent()
Gracias,
Oscar Ribeiro

Oscar Ribeiro

OASyS Inform谩tica

Fwh18.02 + xHarbour 1.2.3 + Bcc72
Posts: 1074
Joined: Fri Oct 07, 2005 01:56 PM
Re: Incrustar otra aplicaci贸n
Posted: Fri Apr 15, 2011 02:04 PM

Sebastian:

Muy interesante, pero por ahora no he tenido ninguna solicitud en hacer eso, si que se queda guardado el las cosas interensante por aplicar

podrias colocar algunas imagenes para poder ver mejor?

Saludos
Patricio

__________________________________________________________________
Version: Harbour 3.2.0dev (r1307082134),Compiler: Borland C++ 5.8.2 (32-bit)
PCode version: 0.3, FWH 13.2
http://www.sialm.cl
Posts: 187
Joined: Mon Oct 20, 2008 06:33 PM
Re: Incrustar otra aplicaci贸n
Posted: Fri Apr 15, 2011 04:12 PM

驴C贸mo puedo hacer que Excel ejecute por completo dentro de la aplicaci贸n? Con todas sus funciones. Lo pregunto porque, tal y como est谩, no puedo imprimir, escribir o modificar una hoja de c谩lculo.
Gracias.

Oscar Ribeiro

OASyS Inform谩tica

Fwh18.02 + xHarbour 1.2.3 + Bcc72
Posts: 144
Joined: Thu Jan 02, 2014 01:49 PM
Re: Incrustar otra aplicaci贸n
Posted: Thu Jul 10, 2014 09:03 PM
ORibeiro wrote:驴C贸mo puedo hacer que Excel ejecute por completo dentro de la aplicaci贸n? Con todas sus funciones. Lo pregunto porque, tal y como est谩, no puedo imprimir, escribir o modificar una hoja de c谩lculo.
Gracias.



Utilizando FWH64.1311 , Visual Studio 2012 y Ofiice 2013 consigo incrustar la ventana de Excel dentro de una MDIChild, y lo 煤nico que NO es posible realizar es la edici贸n de las celdas.

Alguna sugerencia.

Saludos
Posts: 2064
Joined: Fri Jan 06, 2006 09:28 PM
Re: Incrustar otra aplicaci贸n
Posted: Fri Jul 11, 2014 03:01 AM

Muy buena informacion para los que manejamos mucho la exportacion a excel, como comentan algunos colegas, ahora la idea es que se ejecute dentro de una MDI y si es posible como un reporte normal, quitando todo lo posible, saludos... :shock:

Dios no est谩 muerto...



Gracias a mi Dios ante todo!
Posts: 144
Joined: Thu Jan 02, 2014 01:49 PM
Re: Incrustar otra aplicaci贸n
Posted: Tue Jul 22, 2014 08:56 PM

Listo el pollo !!! :-)

Posts: 1286
Joined: Mon Feb 25, 2008 02:54 PM
Re: Incrustar otra aplicaci贸n
Posted: Sun Aug 28, 2016 08:56 PM

DLL32 FUNCTION SETFOREWIN() AS LONG PASCAL FROM "SetForeWin" LIB "user32.dll"
DLL32 FUNCTION SETWINLONA() AS LONG PASCAL FROM "SetWinLona" LIB "user32.dll"

ubiratanmga@gmail.com

FWH24.04
BCC7.3
HARBOUR3.2
xMate
Pelles麓C
TDolphin
Posts: 344
Joined: Sat Jul 22, 2006 09:04 PM
Re: Incrustar otra aplicaci贸n
Posted: Tue Oct 04, 2016 09:38 PM

Hola buenas tardes, se puede hacer esto mismo con Word ?
Saludos

FWH - Harbour - BCC7 - PellesC

Continue the discussion