Word en una Window

Post Reply
User avatar
Marcelo Roggeri
Posts: 275
Joined: Sat Jul 22, 2006 9:04 pm
Location: Venado Tuerto - Santa Fe -Argentina
Contact:

Word en una Window

Post 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

// 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
FWH - Harbour - BCC7 - PellesC - FivEdit (Cristobal Navarro)
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: Word en una Window

Post by Antonio Linares »

Marcelo,

Tienes Word instalado ?

Disculpa la pregunta pero por si acaso :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
Ariel
Posts: 309
Joined: Wed Nov 29, 2006 1:51 pm
Location: Rosario - Argentina

Re: Word en una Window

Post 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.
User avatar
Marcelo Roggeri
Posts: 275
Joined: Sat Jul 22, 2006 9:04 pm
Location: Venado Tuerto - Santa Fe -Argentina
Contact:

Re: Word en una Window

Post 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
FWH - Harbour - BCC7 - PellesC - FivEdit (Cristobal Navarro)
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: Word en una Window

Post by Antonio Linares »

Prueba asi:

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

oActiveX:Visible = .T.

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

Antonio Linares
www.fivetechsoft.com
User avatar
Marcelo Roggeri
Posts: 275
Joined: Sat Jul 22, 2006 9:04 pm
Location: Venado Tuerto - Santa Fe -Argentina
Contact:

Re: Word en una Window

Post by Marcelo Roggeri »

Sigue igual Antonio, no abre nada, quedando el word pillado en memoria
FWH - Harbour - BCC7 - PellesC - FivEdit (Cristobal Navarro)
User avatar
Giovany Vecchi
Posts: 129
Joined: Mon Jun 05, 2006 9:39 pm
Location: Brasil

Re: Word en una Window

Post by Giovany Vecchi »

En este código funciona, más necesita implementar algunos recursos que no he tenido tiempo para hacer.

Code: Select all

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 
 
User avatar
Marcelo Roggeri
Posts: 275
Joined: Sat Jul 22, 2006 9:04 pm
Location: Venado Tuerto - Santa Fe -Argentina
Contact:

Re: Word en una Window

Post 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
FWH - Harbour - BCC7 - PellesC - FivEdit (Cristobal Navarro)
User avatar
Giovany Vecchi
Posts: 129
Joined: Mon Jun 05, 2006 9:39 pm
Location: Brasil

Re: Word en una Window

Post 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.
User avatar
Marcelo Roggeri
Posts: 275
Joined: Sat Jul 22, 2006 9:04 pm
Location: Venado Tuerto - Santa Fe -Argentina
Contact:

Re: Word en una Window

Post by Marcelo Roggeri »

Si por supuesto
FWH - Harbour - BCC7 - PellesC - FivEdit (Cristobal Navarro)
User avatar
cnavarro
Posts: 5792
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Word en una Window

Post 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

// 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


   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

 
C. Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
User avatar
Marcelo Roggeri
Posts: 275
Joined: Sat Jul 22, 2006 9:04 pm
Location: Venado Tuerto - Santa Fe -Argentina
Contact:

Re: Word en una Window

Post by Marcelo Roggeri »

Hola Cristobal buenos dias, si lo probé pero tampoco anduvo.
Saludos
FWH - Harbour - BCC7 - PellesC - FivEdit (Cristobal Navarro)
User avatar
Marcelo Roggeri
Posts: 275
Joined: Sat Jul 22, 2006 9:04 pm
Location: Venado Tuerto - Santa Fe -Argentina
Contact:

Re: Word en una Window

Post 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

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
FWH - Harbour - BCC7 - PellesC - FivEdit (Cristobal Navarro)
Post Reply