[Mundo Visual FoxPro] abrir pdf en vfp

2,617 views
Skip to first unread message

Juan Rojas C

unread,
May 7, 2010, 7:13:08 PM5/7/10
to mundovisualfoxpro
Buenas Tardes:
 
Gracias por su atencion:
 
Tengo el manual de un sistema en llamado tutor.pdf, deseo colocar una opcion en el menu del aplicativo (vfp6), que al dar click en dicha opcion se abra el archvio tutor.pdf y al salir del manual regrese al aplicativo.
 
Nota: ejemplo con RUN y como abrir con ocx
 
gracias
 
JUAN ROJAS
 
 

--
_______________________________________________________________
Has recibido este mensaje porque estás suscrito al Grupo "Mundo Visual
FoxPro" de Grupos de Google.
 
Para anular la suscripción a este grupo, envía un mensaje a:
mundovisualfox...@googlegroups.com

Yvan GMAIL

unread,
May 7, 2010, 7:18:13 PM5/7/10
to mundovis...@googlegroups.com
Utilizar shellexecute...
 
OPEN_FILE("c:\Miarchivo.pdf","open")
 
FUNCTION OPEN_FILE(pcFileName,pcAction,pcParams,pcDefDir,pnShowWindow )
****************************************************
* Filename
If Vartype(pcFileName) <> "C"
 MessageBox("Need a file to open!")
 Return 0
Endif
 
* Action
If Vartype(pcAction) <> "C"
 pcAction = "open"
Endif
 
* Parameters
If Vartype(pcParams) <> "C"
 pcParams = ""
ENDIF
 
* Default Directory
If Vartype(pcDefDir) <> "C"
 pcDefDir = ADDBS(SYS(5)+CURDIR())
ENDIF
 
* Show Window (min / Max etc)
If Vartype(pnShowWindow) <> "N"
 pnShowWindow = 1
Endif
 
#Define SE_ERR_FNF 2
#Define SE_ERR_PNF 3
#Define SE_ERR_ACCESSDENIED 5
#Define SE_ERR_OOM 8
#Define SE_ERR_DLLNOTFOUND 32
#Define SE_ERR_SHARE 26
#Define SE_ERR_ASSOCINCOMPLETE 27
#Define SE_ERR_DDETIMEOUT 28
#Define SE_ERR_DDEFAIL 29
#Define SE_ERR_DDEBUSY 30
#Define SE_ERR_NOASSOC 31
#Define ERROR_BAD_FORMAT 11
 
Declare Integer ShellExecute In shell32.Dll ;
INTEGER hndWin, ;
STRING cAction, ;
STRING cFileName, ;
STRING cParams, ;
STRING cDir, ;
INTEGER nShowWin
 
cFileName = pcFileName
cAction = pcAction
cParams = pcParams
cDir = pcDefDir
nShowWin = pnShowWindow
 
Local lnRetVal
lnRetVal = 0
lnRetVal = ShellExecute(0,cAction,cFileName,cParams,cDir,nShowWin)
 
If lnRetVal <= 32
 Local msg
 msg = ""
 *There was an error
 Do Case
  Case lnRetVal = SE_ERR_FNF
   msg = "File not found"
  Case lnRetVal = SE_ERR_PNF
   msg = "Path not found"
  Case lnRetVal = SE_ERR_ACCESSDENIED
   msg = "Access denied"
  Case lnRetVal = SE_ERR_OOM
   msg = "Out of memory"
  Case lnRetVal = SE_ERR_DLLNOTFOUND
   msg = "DLL not found"
  Case lnRetVal = SE_ERR_SHARE
   msg = "A sharing violation occurred"
  Case lnRetVal = SE_ERR_ASSOCINCOMPLETE
   msg = "Incomplete or invalid file association"
  Case lnRetVal = SE_ERR_DDETIMEOUT
   msg = "DDE Time out"
  Case lnRetVal = SE_ERR_DDEFAIL
   msg = "DDE transaction failed"
  Case lnRetVal = SE_ERR_DDEBUSY
   msg = "DDE busy"
  Case lnRetVal = SE_ERR_NOASSOC
   msg = "No association for file extension"
  Case lnRetVal = ERROR_BAD_FORMAT
   msg = "Invalid EXE file or error in EXE image"
  Otherwise
   msg = "Unknown error"
 Endcase
 RETURN .F.
Else
 Return .T.
Endif
 
ENDFUNC
 
Yvan Carranza
613-8906

Juan Rojas C

unread,
May 7, 2010, 7:25:52 PM5/7/10
to mundovis...@googlegroups.com
lo pondre en practica, muchas gracias
 
JRCORONA

2010/5/7 Yvan GMAIL <yvan.c...@gmail.com>

Ing.Daniel Bojorge

unread,
May 7, 2010, 7:29:00 PM5/7/10
to mundovis...@googlegroups.com
Hace algún tiempo por acá publiqué la rutina que yo uso, la idea es abrir el pdf en un formulario de vfp :D (para facilitar el manejo y además para un mejor aspecto)

En el Init del formulario pongo esto:

This.AddObject("owb","oleControl","Shell.Explorer.2")
This.oWb.Top = 0
This.oWb.Left = 0
This.oWb.Width = Thisform.Width
This.oWb.Height = Thisform.Height
This.oWb.Visible = .T.
This.oWb.Anchor = 240

This.AddProperty("cPDFFileName","")
This.AddProperty("nPdfLoadTimeout",30)

* Get PDF file name
Thisform.cPdfFileName = Getfile("pdf")

* Display the name in the textbox
This.Caption = Thisform.cPdfFileName
If Not Empty(Thisform.cPdfFileName)
* Display PDF
Thisform.ShowPdf()
Endif



la función showpdf contiene:

Local lnSeconds
* Clear Web browser control by loading blank page
Thisform.oWB.Object.Navigate2("About:Blank")
* Wait for load to complete
lnSeconds = Seconds()
Do While (Thisform.oWB.Object.Busy Or Thisform.oWB.Object.ReadyState <> 4) ;
AND (Seconds() - lnSeconds) < This.nPdfLoadTimeout
DoEvents
Enddo

* Load PDF
Wait Window Nowait "Cargando PDF ..."
Thisform.oWB.Object.Navigate2(Thisform.cPdfFileName)
* Wait for PDF to load
lnSeconds = Seconds()
Do While (Thisform.oWB.Object.Busy Or Thisform.oWB.Object.ReadyState <> 4) ;
AND (Seconds() - lnSeconds) < This.nPdfLoadTimeout
DoEvents
Enddo
Wait Clear

* PDF display can be adjusted as shown in AdjustPdfView method
*   Uncomment next line if you want to do that and add AdjustPdfView method to the form/class
*This.AdjustPdfView()

y listo nada más------


Dios L@s Bendiga

Saludos,

Daniel (Con 1 Estrella DCE de Microsoft)
Nicaragua

"Si ustedes permanecen unidos a mí, y si permanecen fieles a mis enseñanzas, pidan lo que quieran y se les dará.
(Juan 15:7 DHH)
Bendito el varón que se fía en el SEÑOR, y cuya confianza es el SEÑOR.
(Jeremías 17:7 RV2000)



2010/5/7 Yvan GMAIL <yvan.c...@gmail.com>

Daniel Sánchez

unread,
May 8, 2010, 9:49:51 AM5/8/10
to mundovis...@googlegroups.com
Espectacular amigo daniel tu ejemplo, le da otro cache a la presentación en pdf en tu aplicación.

--
Daniel Sánchez Escobar
Investigación y Desarrollo
Reset Software & Sistemas
Móvil 044-949398047
Trujillo - Perú

Ing.Daniel Bojorge

unread,
May 8, 2010, 12:39:26 PM5/8/10
to mundovis...@googlegroups.com
Gracias, esa es la idea... poder tener la opción de visualizar PDF desde nuestra propia aplicación :D 


Dios L@s Bendiga

Saludos,

Daniel (Con 1 Estrella DCE de Microsoft)
Nicaragua

"Si ustedes permanecen unidos a mí, y si permanecen fieles a mis enseñanzas, pidan lo que quieran y se les dará.
(Juan 15:7 DHH)
Bendito el varón que se fía en el SEÑOR, y cuya confianza es el SEÑOR.
(Jeremías 17:7 RV2000)



Mario Alfredo Oviedo

unread,
May 11, 2010, 7:08:45 PM5/11/10
to Mundo Visual FoxPro
JUAN
pocas lineas

*lcpdfFileName = GETFILE("pdf")
lcpdfFileName="c:\ruta\demo.pdf"
loIE = Createobject("internetexplorer.application")
loIE.Visible = .T.
loIE.Navigate("file://" + lcPdfFileName)

Daniel Sánchez

unread,
May 12, 2010, 1:19:55 AM5/12/10
to mundovis...@googlegroups.com
Bueno si es pocas líneas, pero no queda en una ventana dentro de tu misma aplicación, si no que abre el iexplorer para visualizarlo.
No esta nada mal, pero el otro da la apariencia de que en tu programa manejas el archivo pdf.
Por supuesto que es solo una opinión, gracias por tu aporte.

-- 
Daniel Sánchez Escobar
Investigación y Desarrollo
Reset Software & Sistemas
Móvil 044-949398047
Trujillo - Perú

Alex Field

unread,
Jun 11, 2010, 7:25:27 PM6/11/10
to Mundo Visual FoxPro
Alguien sabe de una ocx o lo que sea para acceder a un PDF, recorrer
sus datos y Exportarlos en VFP?
Muchas Gracias, Alejandro.
Reply all
Reply to author
Forward
0 new messages