Mostrar un PDF en un formulario con "Shell.Explorer.2"

542 views
Skip to first unread message

Jose Antonio Blasco

unread,
Feb 17, 2022, 10:03:21 AM2/17/22
to Comunidad de Visual Foxpro en Español
Buenas tardes,
He incluido en un formulario de mi aplicación, el objeto "Shell.Explorer.2" para mostrar en el diferentes archivos PDF, cuya ruta y nombre tengo almacenados en una tabla.
Si lo manejo desde el IDE funciona correctamente, mostrando los diferentes PDF's conforme me desplazo por la tabla, pero si genero el "exe" y lo ejecuto desde la misma carpeta, no muestra ningún error, pero no se muestran los PDF's.
No sé cual puede ser el problema, porque además, detecto que con el "exe", al salir del formulario tarda como 12 o 14 segundos en cerrarse, cuando desde IDE es inmediato.

¿ Alguien tiene idea de que puede estar pasando ?


José A. Blasco
VFP9 SP2  Vers. 7423
Zaragoza - España

jorgeg...@gmail.com

unread,
Feb 17, 2022, 10:26:36 AM2/17/22
to Comunidad de Visual Foxpro en Español
Que tal José.

Oracle Outside in Viewer ActiveX


Yo trabajo con esta dll OutsideX32_855 de oracle free y permite visualizar e imprimir archivos pdf, doc, xls, jpg, bmp

Saludos....

Zarlu

unread,
Feb 17, 2022, 11:59:29 AM2/17/22
to Comunidad de Visual Foxpro en Español
Buenos días José!

Uso el mismo control.
En ejecución me presenta el retardo al iniciar el formulario y cargar el primer PDF. Retardo mínimo.
Después del primero el cambio a otro PDF es "rápido". Los otros PDF están en el mismo directorio en red.
Lo parché en el GoFoucs() del Form para  distraer al usuario:

*para dar tiempo se cargue primer pdf al abrir formulario
IF ThisForm.Tag=="cargado"
        waitscale("Cargando archivos PDF, espere por favor . . .","TIMEOUT 2 WINDOWS")
        Thisform.grid1.SetFocus
        ThisForm.Tag="listo"
EndIf

Probare cambiando a PDF en otro directorio

Suerte
zarlu
Chetumal, Quintana Roo, México

Jose Antonio Blasco

unread,
Feb 17, 2022, 12:11:45 PM2/17/22
to Comunidad de Visual Foxpro en Español
Gracias a los dos por las sugerencias.  Voy a continuar haciendo pruebas con las indicaciones.
Ya os diré.

Jose A. Blasco
Zaragoza - España
Visual FoxPro 9 SP2



--
Blog de la Comunidad Visual FoxPro en Español: http://comunidadvfp.blogspot.com
---
Has recibido este mensaje porque estás suscrito al grupo "Comunidad de Visual Foxpro en Español" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a publicesvfoxp...@googlegroups.com.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/publicesvfoxpro/c8205a45-cb6e-4b50-8297-c74695a8fff2n%40googlegroups.com.

Jose Antonio Blasco

unread,
Feb 17, 2022, 1:18:35 PM2/17/22
to Comunidad de Visual Foxpro en Español
No hay manera Zarlu, no es que tenga un retardo, es que, con el "exe", no llega a mostrar nada, después de esperar varios minutos.  Tampoco muestra ningún mensaje de error.  Parece estar todo registrado correctamente, pero no sé que diferencia puede haber entre ejecutarlo desde el IDE o el "exe" generado en la misma carpeta.
Seguiré probando.

Jorge, he estado mirando el ActiveX de Oracle pero no me queda claro que componente tengo que descargar y como usarlo.  Además parece que la instalación tiene su complejidad, pero lo miraré más tranquilamente.

Un saludo a ambos.

Jose A. Blasco
Zaragoza - España
Visual FoxPro 9 SP2


HernanCano

unread,
Feb 17, 2022, 1:31:05 PM2/17/22
to Comunidad de Visual Foxpro en Español
Jose:
Verifica si en los comandos que estás usando hay TRY/CATCH. Mira cómo los desactivas para que salgan (se vean) los errores.

También mira cómo incluyes AERROR() de manera que tengas otra forma de capturar los errores.
Message has been deleted
Message has been deleted

Zarlu

unread,
Feb 17, 2022, 1:55:49 PM2/17/22
to Comunidad de Visual Foxpro en Español
Qué tal José!

Muestra como lo cargas.
Quizá agregando un form sólo para eso y crear el exe.

Otras opciones:

zarlu
Chetumal, Quintana Roo, Mexico

jmn...@gmail.com

unread,
Feb 17, 2022, 4:26:54 PM2/17/22
to publice...@googlegroups.com

Estimado prueba con esto, le pasas como parámetro la ruta y nombre de archivo, no solo sirva para pdfs, también previsualizar documentos de  Word, Excel, jpg, etc

 

 

PROCEDURE File_Form

****************************

PARA XNAMEDOC

XNAMEDOC = ALLTRIM(XNAMEDOC)

 

IF ATC(' ',XNAMEDOC) > 0

   XNAMEDOC = NameCortoFile(XNAMEDOC,1)

Endi 

_Vfp.AutoYield = .F.

Public oFormWord

oFormW = Createobject("formword")

oFormW.Show()

 

*- Definición de la clase formword

Define Class formword As form &&BASEFORM

      Add Object oleWebWrowser As IEClass With Name = "oleWebBrowser"

    

      Procedure Resize

            This.oleWebBrowser.Height = This.Height

            This.oleWebBrowser.Width = This.Width

      Endproc

 

      Procedure Init

            This.Height = _vfp.height-200

            This.width = _vfp.width-50

            This.autocenter = .t.

            *This.icon = 'graficos\excel.ico'

            This.icon = 'graficos\camera.ico'

            This.Caption = ' '

            This.BorderStyle = 3

            This.Closable = .t.

            This.maxbutton = .T.

            This.minbutton = .f.

            With This.oleWebBrowser

                  .Top = 0

                  .Left = 0

                  .Navigate(XNAMEDOC)

            Endwith

            This.Resize()

            this.windowtype = 1

      Endproc

Enddefine

 

 

*- Definición de la clase IEClass

Define Class IEClass As OleControl

      OleClass = "Shell.Explorer.2"

 

      Procedure Init

            This.Navigate("about:blank")

      Endproc

 

      Procedure Refresh

            Nodefault

      Endproc

Enddefine

 

 

 

 

 

Saludos cordiales,

 

Manuel Navarro

--

Blog de la Comunidad Visual FoxPro en Español: http://comunidadvfp.blogspot.com
---
Has recibido este mensaje porque estás suscrito al grupo "Comunidad de Visual Foxpro en Español" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a publicesvfoxp...@googlegroups.com.

ZeRoberto

unread,
Feb 17, 2022, 9:15:34 PM2/17/22
to publice...@googlegroups.com
Hola Jose Antonio

No es que no lo abra sino que a la primera vez demora en cargar el Adobe Reader y a no lo muestra en su reemplazo muestra una pantalla oscura, a veces hay que maximizar el formulario para que se muestre la hoja.

Saludos

Ze





--
Blog de la Comunidad Visual FoxPro en Español: http://comunidadvfp.blogspot.com
---
Has recibido este mensaje porque estás suscrito al grupo "Comunidad de Visual Foxpro en Español" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a publicesvfoxp...@googlegroups.com.

Jose Antonio Blasco

unread,
Feb 18, 2022, 3:34:08 AM2/18/22
to Comunidad de Visual Foxpro en Español
Gracias a todos por las sugerencias.  
Todos los ejemplos que pasais funcionan correctamente, de hecho, como ya he comentado, también el mío, "siempre que lo pruebe desde el IDE".  Todo cambia cuando genero el "exe" y ejecuto éste desde la misma carpeta, por si faltase algo de incluir en el proyecto.
ZeRoberto, no es que se demore en cargar la primera vez, porque he llegado a esperar 10' mirando la pantalla como un "gilip...." y no ocurre nada.

Por concretar más, el formulario es un ABM de un fichero, que también incluye entre sus campos, uno con la ruta donde se encuentra un PDF asociado a la información de cada registro.  En mi formulario, además de los diferentes textbox para el resto de los campos, también incluyo un objeto "Shell.Explorer.2", donde mostrar el PDF.   Si ejecuto la aplicación desde el IDE (con "DO INI.PRG" que es mi prg inicial), entrando al formulario en cuestión, se muestra tras un par de segundos el PDF asociado al primer registro, y si voy pulsando en "Siguiente" o "Anterior", va apareciendo el PDF asociado al registro que se muestra sin problemas.  Cuando genero el "exe" de dicho proceso, y lo ejecuto, puedo seguir moviéndome sin problemas por los diferentes registros, pero los PDF's asociados no se muestran.

La rutina que carga el PDF en el objeto ("thisform.vista.pdf" en mi caso) es la siguiente:
NOTA: "cPdfFileName" contiene la ruta y nombre del PDF, y cuando llega a esta rutina, ya he comprobado que dicho PDF exista.

Lparameters cPdfFileName
*
Local lnSeconds

*-- Limipiar navaegador
Thisform.vista.pdf.Navigate2("about:blank")
*-- Espera hasta completar
lnSeconds = Seconds()
Do While (Thisform.vista.pdf.Busy Or Thisform.vista.pdf.ReadyState <> 4) ;
AND (Seconds() - lnSeconds) < 30
DoEvents
Enddo

* Cargar PDF
If !Empty(cPdfFileName)
*
thisform.LockScreen = .T.
WITH thisform.vista.pdf
.left = 1
.top = 1
.height = .parent.height - 2
.width = .parent.width - 2
endwith
thisform.LockScreen = .F.
*
Wait Window Nowait NOCLEAR "Cargando Plano ..."
Thisform.vista.pdf.Navigate2(cPdfFileName)
*-- Espera hasta completar
lnSeconds = Seconds()
Do While (Thisform.vista.pdf.Busy Or Thisform.vista.pdf.ReadyState <> 4) ;
AND (Seconds() - lnSeconds) < 30
DoEvents
Enddo
Wait Clear

thisform.vista.BackStyle = 0
thisform.vista.pdf.SetFocus()
Endif

Mi rutina de errores sigue el método antiguo con "ON ERROR DO ..", tal vez podría cambiar la carga del PDF usando "TRY...CACH".

Como el plazo de entrega se acerca, he tenido que cambiar la pantalla, incluyendo un botón que con "WScript.Shell.Run" le paso la ruta y nombre del PDF y lo abre con la app asociada (Adobe Reader) sin problemas, tanto desde el IDE como con el "exe", pero el resultado, aunque operativo, me parece peor y me gustaría saber como solucionarlo.

Gracias a todos por vuestro interés.  Si consigo solucionarlo, os lo comentaré.

Un saludo.

Jose A. Blasco
Zaragoza - España
Visual FoxPro 9 SP2


Zarlu

unread,
Feb 18, 2022, 8:52:39 AM2/18/22
to Comunidad de Visual Foxpro en Español
Buenos días José!

Te sugiero crear un ejecutable con sólo un formulario y con sólo esa rutina.
La idea es descartar que el entorno de tu aplicación original lo este afectando.

Suerte
zarlu
Chetumal, Quintana Roo, México

Esteban Herrero

unread,
Feb 18, 2022, 9:56:40 AM2/18/22
to publice...@googlegroups.com

Hola José.

Yo utilizo un método q guardo en una clase llamada rutinas q se llama abrirpdf y es así:

PARAMETERS lcFile
LOCAL loShell
loShell = CREATEOBJECT("Shell.Application")
loShell.ShellExecute(lcFile)
RELEASE loShell

abre el acrobat reader con el pdf...

Lo q te pasó Jorge (librería Oracle), es interesante, voy a hacer algun prueba cuando tenga tiempo p ver.

Saludos

Esteban

Daniel Sánchez

unread,
Feb 18, 2022, 11:45:27 AM2/18/22
to Comunidad de Visual Foxpro en Español
Manda un wait  cPdfFileName window nowait

para que veas si va el nombre del archivo con la ruta correcta, eso solo para que verifiques luego si esta correcto lo quitas

Saludos



--
Daniel Sánchez Escobar
Investigación y Desarrollo
Reset Software SAC
Móvil y WhatsApp +051-949398047 / Móvil 948615385
Trujillo - Perú

P  Sugerimos no imprimir este e-mail a menos que sea absolutamente necesario. Protejamos el medio ambiente.

jorgeg...@gmail.com

unread,
Feb 18, 2022, 6:37:06 PM2/18/22
to Comunidad de Visual Foxpro en Español

Jose es super sencillo y poderoso.




Jorge, he estado mirando el ActiveX de Oracle pero no me queda claro que componente tengo que descargar y como usarlo.  Además parece que la instalación tiene su complejidad, pero lo miraré más tranquilamente.

ZeRoberto

unread,
Feb 18, 2022, 8:45:40 PM2/18/22
to publicesvfoxpro
Hola Jose me he dado cuenta que se demora en esta parte

*-- Espera hasta completar
lnSeconds = Seconds()
Do While (Thisform.vista.pdf.Busy Or Thisform.vista.pdf.ReadyState <> 4) AND (Seconds() - lnSeconds) < 30
  DoEvents
Enddo

Si le disminuyes a 5 segundos te vas a dar cuenta que es un poco más rápido

Saludos

Ze

ZeRoberto

unread,
Feb 18, 2022, 8:53:17 PM2/18/22
to publicesvfoxpro
Y como se descarga no encuentro ningun link

Saludos

Ze



--
Blog de la Comunidad Visual FoxPro en Español: http://comunidadvfp.blogspot.com
---
Has recibido este mensaje porque estás suscrito al grupo "Comunidad de Visual Foxpro en Español" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a publicesvfoxp...@googlegroups.com.

ZeRoberto

unread,
Feb 18, 2022, 9:19:03 PM2/18/22
to publicesvfoxpro
 Jose Antonio me he dado cuenta que si quitas toda esa sección el pdf te cargará más rápido, pero te recomiendo que lo lances desde un timer


Ejemplo

Al Timer ponle un intervalo de 10


Procedure btnVer.Click()
   ThisForm.NombrePdf = dbTable.NombrePdf
   ThisForm.tmrLanzador.Enabled = .T.
EndProc

Procedure tmrLanzador.Timer()
   This.Enabled = .F.
   With ThisForm.ocxVisor
        .Navigate(ThisForm.NombrePdf)
        .Refresh()
   EndWith
EndProc


Saludos

Ze



El jue, 17 feb 2022 a la(s) 10:03, Jose Antonio Blasco (jabl...@gmail.com) escribió:
--
Blog de la Comunidad Visual FoxPro en Español: http://comunidadvfp.blogspot.com
---
Has recibido este mensaje porque estás suscrito al grupo "Comunidad de Visual Foxpro en Español" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a publicesvfoxp...@googlegroups.com.

Miguel A.

unread,
Feb 19, 2022, 1:58:13 PM2/19/22
to Comunidad de Visual Foxpro en Español
Creo que puede ser porque no esté abriendo pdf.ocx que debería y que está abriéndolo con el ocx de tu versión de Acrobat.
Saludos maño!
Miguel

jorgeg...@gmail.com

unread,
Feb 19, 2022, 5:36:48 PM2/19/22
to Comunidad de Visual Foxpro en Español

ZeRoberto

unread,
Feb 19, 2022, 9:47:16 PM2/19/22
to publicesvfoxpro
Me asombra la velocidad con la que abre un PDF pero a los XML no los abre como debe ser

Saludos

Ze



Edwin Duran

unread,
Feb 20, 2022, 5:42:57 PM2/20/22
to Comunidad de Visual Foxpro en Español
Saludos gracias por el aporte, veo que no solo pdf también otros archivos, por casualidad tienes la documentación del ocx

HernanCano

unread,
Feb 21, 2022, 10:04:03 AM2/21/22
to Comunidad de Visual Foxpro en Español

HernanCano

unread,
Feb 21, 2022, 10:08:52 AM2/21/22
to Comunidad de Visual Foxpro en Español

jorgeg...@gmail.com

unread,
Feb 21, 2022, 2:35:34 PM2/21/22
to Comunidad de Visual Foxpro en Español
Aqui esta el pdf Edwin Duran, si lee varios formatos, pdf, doc, xls, jpg, bmp, corel, autocad.....

https://www.dropbox.com/s/9iec8m5nh1y5ksb/OIVWX.pdf?dl=0

Edwin Duran

unread,
Feb 21, 2022, 5:50:19 PM2/21/22
to Comunidad de Visual Foxpro en Español
Gracias

Jose Antonio Blasco

unread,
Feb 22, 2022, 2:56:55 AM2/22/22
to Comunidad de Visual Foxpro en Español
Jorge, funciona perfecto, y como ya ha dicho algún compañero es muy rápido en la carga.
!! Muchas gracias !!.
Voy a probar también el resto de sugerencias.
Gracias a todos.
Un saludo.

Jose A. Blasco
Zaragoza - España
Visual FoxPro 9 SP2




--
Blog de la Comunidad Visual FoxPro en Español: http://comunidadvfp.blogspot.com
---
Has recibido este mensaje porque estás suscrito al grupo "Comunidad de Visual Foxpro en Español" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a publicesvfoxp...@googlegroups.com.

Victor Espina

unread,
Apr 6, 2022, 3:35:34 PM4/6/22
to Comunidad de Visual Foxpro en Español
Tienes a mano el link para descargar ese Viewer?   Lo busque pero no pude encontrarlo.  Se ve bien interesante.

Victor Espina

Victor Espina

unread,
Apr 6, 2022, 3:37:27 PM4/6/22
to Comunidad de Visual Foxpro en Español
Gracias!!

Zarlu

unread,
Apr 6, 2022, 4:11:38 PM4/6/22
to Comunidad de Visual Foxpro en Español
Buenas tardes maestro Victor!

A lo de oracle se refiere?

Quizá por acá:

Suerte
zarlu
Chetumal, Quintana Roo, México
Reply all
Reply to author
Forward
0 new messages