Page 1 of 1

Word en una Window

PostPosted: Thu Sep 06, 2018 3:19 pm
by Marcelo Roggeri
Hola buenos dias, necesito utilizar el ejemplo de word.prg que esta en samples, lo compilo y no hace nada.
Necesito abrir un archivo de word, editarlo y luego guardarlo dentro de una tabla mysql, tambien poder ver el contenido en cualquier momento.
Ahora lo que necesito es poder abrir word dentro de la ventana oWnd
Code: Select all  Expand view
// Using Microsoft Office Word ActiveX

#include "FiveWin.ch"

function Main()

   local oWnd, oActiveX

   DEFINE WINDOW oWnd TITLE "FiveWin ActiveX Support"

          oActiveX = TActiveX():New( oWnd, "Word.Application" )

          oWnd:oClient = oActiveX // To fill the entire window surface

   ACTIVATE WINDOW oWnd

return nil
 

Gracias cualquier ayuda
Marcelo Roggeri

Re: Word en una Window

PostPosted: Fri Sep 07, 2018 8:29 am
by Antonio Linares
Marcelo,

Tienes Word instalado ?

Disculpa la pregunta pero por si acaso :-)

Re: Word en una Window

PostPosted: Fri Sep 07, 2018 10:46 am
by Ariel
Antonio,
a mi tampoco me funciona el ej. me da el tipico msg, "el programa no responde", lo probe con w7, ni siquiera vemos la ventana de fondo.

Saludos.

Re: Word en una Window

PostPosted: Fri Sep 07, 2018 11:37 am
by Marcelo Roggeri
Antonio si lo tengo instalado, a mi no me da error al ejecutarlo pero al apagar la computadora y después al encenderla aparece una ventana de word como que no se ha guardado el documento.
Gracias por responder y cualquier ayuda me viene bien porque necesito implementar lo que mencione al inicio
Saludos
Marcelo

Re: Word en una Window

PostPosted: Fri Sep 07, 2018 12:05 pm
by Antonio Linares
Prueba asi:

oActiveX = TActiveX():New( oWnd, "Word.Application" )

oActiveX:Visible = .T.

oWnd:oClient = oActiveX // To fill the entire window surface

Re: Word en una Window

PostPosted: Fri Sep 07, 2018 12:29 pm
by Marcelo Roggeri
Sigue igual Antonio, no abre nada, quedando el word pillado en memoria

Re: Word en una Window

PostPosted: Fri Sep 07, 2018 3:26 pm
by Giovany Vecchi
En este código funciona, más necesita implementar algunos recursos que no he tenido tiempo para hacer.

Code: Select all  Expand view

Static oWndTst,oObjWord,oWordHWnd

FUNCTION OFFICE_WORD_TESTE()

   DEFINE WINDOW oWndTst TITLE "FiveWin ActiveX Support"
 
   ACTIVATE WINDOW oWndTst on init OFFICE_WORD_TESTE_INI() ;
     on resize If(HB_ISNIL(oObjWord),Nil,;
                  {oObjWord:Move(0,0),;
                   WndSetSize(oWordHWnd,oWndTst:nWidth-18,oWndTst:nHeight-42,.T.),;
                   oObjWord:Move(0,0)})
 
return nil
//----------------------------------------------------------------------------//
FUNCTION OFFICE_WORD_TESTE_INI()
  local oteste, oWindow, oView, oIncorp
 
#define GWL_WNDPROC         (-4)
#define GWL_HINSTANCE       (-6)
#define GWL_HWNDPARENT      (-8)
#define GWL_STYLE           (-16)
#define GWL_EXSTYLE         (-20)
#define GWL_USERDATA        (-21)
#define GWL_ID              (-12)

   oObjWord := CreateObject("Word.Application")

  syswait(.2)
  oWordHWnd := FindWindow( "opusapp", 0 )
 
  if oWordHWnd != nil
    SetWindowLong( oWordHWnd, -16, WS_OVERLAPPED+WS_CLIPCHILDREN)
    SetWindowLong( oWordHWnd, -20,  WS_EX_NOPARENTNOTIFY+WS_EX_TOPMOST )
    SetParent( oWordHWnd, oWndTst:hWnd )
  endif

  oObjWord:WindowState := -4137
  oObjWord:Move(0,0)
  oObjWord:Visible           := .T.

RETURN NIL
 

Re: Word en una Window

PostPosted: Fri Sep 07, 2018 3:50 pm
by Marcelo Roggeri
Gracias Giovany, tu lo invocas de otra manera pero para el caso puede servir.
Veré como prosigo con el resto
atte Marcelo

Re: Word en una Window

PostPosted: Fri Sep 07, 2018 3:54 pm
by Giovany Vecchi
Marcelo Roggeri wrote:Gracias Giovany, tu lo invocas de otra manera pero para el caso puede servir.
Veré como prosigo con el resto
atte Marcelo


Si tienes novedades. comparte con nosotros.

Re: Word en una Window

PostPosted: Fri Sep 07, 2018 6:40 pm
by Marcelo Roggeri
Si por supuesto

Re: Word en una Window

PostPosted: Sat Sep 08, 2018 2:39 pm
by cnavarro
Marcelo Roggeri wrote:Hola buenos dias, necesito utilizar el ejemplo de word.prg que esta en samples, lo compilo y no hace nada.
Necesito abrir un archivo de word, editarlo y luego guardarlo dentro de una tabla mysql, tambien poder ver el contenido en cualquier momento.
Ahora lo que necesito es poder abrir word dentro de la ventana oWnd
Code: Select all  Expand view
// Using Microsoft Office Word ActiveX

#include "FiveWin.ch"

function Main()

   local oWnd, oActiveX

   DEFINE WINDOW oWnd TITLE "FiveWin ActiveX Support"

          oActiveX = TActiveX():New( oWnd, "Word.Application" )

          oWnd:oClient = oActiveX // To fill the entire window surface

   ACTIVATE WINDOW oWnd

return nil
 

Gracias cualquier ayuda
Marcelo Roggeri


Marcelo, has probado

Code: Select all  Expand view


   DEFINE WINDOW oWnd TITLE "FiveWin ActiveX Support"

          oActiveX = TActiveX():New( oWnd, "Word.Application" )

          oActiveX:lVisible  := .T.

          oWnd:oClient = oActiveX // To fill the entire window surface

   ACTIVATE WINDOW oWnd

 

Re: Word en una Window

PostPosted: Sat Sep 08, 2018 3:38 pm
by Marcelo Roggeri
Hola Cristobal buenos dias, si lo probé pero tampoco anduvo.
Saludos

Re: Word en una Window

PostPosted: Thu Sep 27, 2018 9:02 pm
by Marcelo Roggeri
Hola retomando el hilo les cuento que logro ver el word dentro de la window, pero me da un error al ACTIVATE WINDOW
Me podran dar una mano por favor
Code: Select all  Expand view
FUNCTION ShowWord( oServer )
    local oQry, nHandle
    local oWndChild, oActiveX
    local cTemp := hb_CurDrive() + ":\" + CurDir() + "\tempWord.docx"
    local oWord, oDoc
    local oteste, oWindow, oView, oIncorp

    oQry = oServer:Query("
SELECT file FROM files WHERE filename='marcelo.docx'")

    IF oQry:RecCount() > 0
       FErase( cTemp )

       nHandle := FCreate( cTemp )

       IF FError() # 0
          CursorArrow()
          MsgInfo( "
Error al crear el archivo"  )
       ELSE

          FWrite( nHandle, oQry:file, Len( oQry:file ) )
          FClose( nHandle )

          oQry:End()

          DEFINE WINDOW oWndChild MDICHILD TITLE "
WORD EN VENTANA HIJA" OF oWnd

                 oWord := CreateObject("
Word.Application")

                 oDoc  := oWord:Documents:Open(cTemp) // abre el doc modelo

                 syswait(.2)
                 oWndChild := FindWindow( "
opusapp", 0 )

                 if oWndChild != nil
                   SetWindowLong( oWndChild, -16, WS_OVERLAPPED+WS_CLIPCHILDREN)
                   SetWindowLong( oWndChild, -20,  WS_EX_NOPARENTNOTIFY+WS_EX_TOPMOST )

                   SetParent( oWndChild, oWnd:hWnd )

                 endif

                 oWord:WindowState := -4137

                 oWord:Move(0,0)

                 oWord:Visible           := .T.

          ACTIVATE WINDOW oWndChild

       ENDIF
    ELSE
        MsgInfo( "
Archivo no encontrado" )
    ENDIF


RETURN NIL


Error description: Error BASE/1004 No exported method: BLCLICKED

Saludos
Marcelo