Page 1 of 2

Cargar y mostrar un archivo PDF RESUELTO

PostPosted: Wed Feb 26, 2014 2:28 am
by Armando
Amigos foreros:

Es posible cargar una archivo .PDF y mostrarlo en una dialogo?, he buscado aquí en el foro pero
los ejemplos son con .BMP, .JPG, etc., cuando trato de ajustarlo a .PDFs no lo logro.

Saludos

Re: Cargar y mostrar un archivo PDF

PostPosted: Wed Feb 26, 2014 6:16 am
by AIDA
Hola espero te sea útil :)

Code: Select all  Expand view
FUNCTION VerPDFF(cFichero)

Local oDlg,cFicheroo,oActiveX

oQry := TDolphinQry():New( "SELECT * FROM polizario order by archivo" )


DEFINE DIALOG oDlg RESOURCE "DIALOGPDF" TITLE "POLIZA EN FORMATO PDF--->"+" "+ oQry:poliza
oDlg:lHelpIcon:=.F.
REDEFINE ACTIVEX oActiveX ID 800 OF oDlg PROGID "AcroPDF.PDF.1"

ACTIVATE DIALOG oDlg  CENTERED ;
ON INIT (oActiveX:Do( "LoadFile", ALLTRIM(cFichero) ),oActiveX:Do( "SetCurrentPage", 1 )  ) //NOMODAL

RETURN NIL
 

Re: Cargar y mostrar un archivo PDF

PostPosted: Wed Feb 26, 2014 3:16 pm
by Armando
Aida:

Gracias por el ejemplo, sería posible ver los recursos del mismo?, me interesa
ver que control usas para el ActiveX. Uso PellesC.

Necesito alguna DLL o algo más?

Saludos

Re: Cargar y mostrar un archivo PDF

PostPosted: Wed Feb 26, 2014 3:29 pm
by karinha
Mira se ayuda:

Code: Select all  Expand view

// USANDO o ADOBE READER - 25/11/2013 - DIRETO VIA FIVEWIN 13.06

FUNCTION ShowPDF_READER( cAlias )

   LOCAL oWndPdf, oPdf, cTmp, NFEVisualSUM, nNumNfeSUM, nRecNo, oTaskP

   nRecNo     := ( cAlias )->( RecNo() ) //-> CCE.DBF
   GoTo( nRecNo )

   nNumNfeSUM := VAL( SUBSTR( ( cAlias )->CHAVE, 29, 6 ) )

   NFEVisualSUM := "C:\NFEPDF\"+"CCE"+ALLTRIM( STR( nNumNfeSUM ) )+".PDF"

   MsgWait( "
LOCALIZANDO O ARQUIVO DA CARTA DE CORRECAO", ;
            "
AGUARDE UM MOMENTO POR FAVOR...           ", 1.5 )

   // USANDO ADOBE READER DIRETO VIA CODIGO - ACTIVEX DO FWH13.06 - 26/11/2013
   IF .NOT. FILE( NFEVisualSUM )  

      RETURN NIL

   ENDIF

   DEFINE WINDOW oWndPdf TITLE "
FiveWin ActiveX Support - Visualizar/Imprimir o *.PDF Usando o Adobe Reader"

   oPdf := TActiveX():New( oWndPdf, "
AcroPDF.PDF.1" )

   oWndPdf:oClient := oPdf

   oPdf : src = NFEVisualSUM

   // Mostra Preview Pequeno no lado esquerdo da tela...
   // oPdf:Do( "
SetPageMode", "thumbnail and pages" )

   oPdf:SetProp( "
Src", cTmp )

   oPdf:Do( "
LoadFile", Lfn2Sfn(cTmp) )

   oPdf:Do( "
GetVersions" )

   oPdf:Do( "
SetCurrentPage", 1 )

   // oPdf:Print() // Nao funciona direto na impressora..

   // Mostra a Barra de Botoes do ADOBE READER
   oPdf:Do( "
SetShowToolbar", .T. )

   // Liga/Desliga barra de Scroll do lado direto do Adobe Reader
   oPdf:Do( "
SetShowScrollbars", .T. )  // Liga/Desliga Scroll

   ACTIVATE WINDOW oWndPdf MAXIMIZED  ;
            ON INIT( PDFActivex( oPdf ) ) ;  // EM CARTA.PRG
            VALID( oWndPdf := NIL, oPdf:End(), .T. )

RETURN NIL

FUNCTION PDFActivex( MyProgID )

   LOCAL adretor := .T.
 
   if IsActivex( "
PDF.PdfCtrl.1" ); MyProgID := "PDF.PdfCtrl.1"; endif
   if IsActivex( "
PDF.PdfCtrl.2" ); MyProgID := "PDF.PdfCtrl.2"; endif
   if IsActivex( "
PDF.PdfCtrl.3" ); MyProgID := "PDF.PdfCtrl.3"; endif
   if IsActivex( "
PDF.PdfCtrl.4" ); MyProgID := "PDF.PdfCtrl.4"; endif
   if IsActivex( "
PDF.PdfCtrl.5" ); MyProgID := "PDF.PdfCtrl.5"; endif
   if IsActivex( "
PDF.PdfCtrl.6" ); MyProgID := "PDF.PdfCtrl.6"; endif
   if IsActivex( "
PDF.PdfCtrl.7" ); MyProgID := "PDF.PdfCtrl.7"; endif
   if IsActivex( "
acroPDF.PDF.1" ); MyProgID := "acroPDF.PDF.1"; endif
   if IsActivex( "
acroPDF.PDF.2" ); MyProgID := "acroPDF.PDF.2"; endif

   IF Empty( MyProgID )

      MsgInfo( "
PDF Activex não instalado !!!"+CRLF+" É necessário que seja instalado o programa ADOBE READER, consulte o suporte do sistema.",.F.)

      adretor := .F.

   ENDIF

RETURN(adretor)



Re: Cargar y mostrar un archivo PDF

PostPosted: Wed Feb 26, 2014 5:29 pm
by Armando
Karinha:

Muchas gracias por el ejemplo, estoy ajustándolo a mis necesidades pero me tira un error

Este es el código modificado:
Code: Select all  Expand view

STATIC FUNCTION ShowPDF_READER()
   LOCAL oWndPdf, oPdf, cTmp, cFilePdf

   cFilePdf := oApp:cPathAdj + ALLTRIM(oRsAdj:Fields("ADJ_FIL"):Value)  // Tomo el nombre del archivo PDF de una tabla

    IF .NOT. FILE(cFilePdf)
        MsgInfo("No existe el archivo que desea mostrar !",oApp:cAlicacion)
        RETURN(.F.)
    ENDIF

   DEFINE WINDOW oWndPdf TITLE "Soporte ActiveX - Visualizar un achivo  *.PDF Usando Adobe Reader"
       oPdf := TActiveX():New( oWndPdf, "AcroPDF.PDF.1" )

       oWndPdf:oClient := oPdf

        oPdf:Src := cFilePdf

        // Muestra una vista previa pequeña en el lado izquierdo de la ventana
        // oPdf:Do( "SetPageMode", "thumbnail and pages" )

        oPdf:SetProp( "Src", cTmp )
        oPdf:Do( "LoadFile", Lfn2Sfn(cTmp) )
        oPdf:Do( "GetVersions" )
        oPdf:Do( "SetCurrentPage", 1 )

        // Muestra la barra de botones de ADOBE READER
        oPdf:Do( "SetShowToolbar", .T. )

        // Liga/Desliga barra de Scroll do lado direto do Adobe Reader
        oPdf:Do( "SetShowScrollbars", .T. )  // Liga/Desliga Scroll

   ACTIVATE WINDOW oWndPdf MAXIMIZED ON INIT(PDFActivex( oPdf )) VALID(oWndPdf := NIL, oPdf:End(), (.T.))
RETURN NIL


/*
============================================================================
============================================================================
*/

FUNCTION PDFActivex( MyProgID )
   if IsActivex( "PDF.PdfCtrl.1" ); MyProgID := "PDF.PdfCtrl.1"; endif
   if IsActivex( "PDF.PdfCtrl.2" ); MyProgID := "PDF.PdfCtrl.2"; endif
   if IsActivex( "PDF.PdfCtrl.3" ); MyProgID := "PDF.PdfCtrl.3"; endif
   if IsActivex( "PDF.PdfCtrl.4" ); MyProgID := "PDF.PdfCtrl.4"; endif
   if IsActivex( "PDF.PdfCtrl.5" ); MyProgID := "PDF.PdfCtrl.5"; endif
   if IsActivex( "PDF.PdfCtrl.6" ); MyProgID := "PDF.PdfCtrl.6"; endif
   if IsActivex( "PDF.PdfCtrl.7" ); MyProgID := "PDF.PdfCtrl.7"; endif
   if IsActivex( "acroPDF.PDF.1" ); MyProgID := "acroPDF.PDF.1"; endif
   if IsActivex( "acroPDF.PDF.2" ); MyProgID := "acroPDF.PDF.2"; endif

   IF Empty( MyProgID )
      MsgInfo( "PDF Activex no instalado !" + CRLF + " Es necesario que sea instalado el programa ADOBE READER, consulte a suporte de sistemas.",oApp:cAplicacion)
      RETURN(.F.)
   ENDIF
RETURN(.T.)
 


Y este es parte del error.log:
Code: Select all  Expand view

Application
===========
   Path and name: C:\SarWin\SarWin.Exe (32 bits)
   Size: 2,048,512 bytes
   Time from start: 0 hours 0 mins 11 secs
   Error occurred at: 26/02/2014, 11:24:46
   Error description: Error BASE/1005  Message not found: TACTIVEX:_SRC

Stack Calls
===========
   Called from: source\rtl\tobject.prg => TACTIVEX:ERROR(172)
   Called from: source\rtl\tobject.prg => TACTIVEX:MSGNOTFOUND(205)
   Called from: source\rtl\tobject.prg => TACTIVEX:_SRC(0)
   Called from: C:\SarWin\Source\SarWin1b.Prg => SHOWPDF_READER(1039)
   Called from: C:\SarWin\Source\SarWin1b.Prg => (b)EDITAR(652)
   Called from: .\source\classes\WINDOW.PRG => TWINDOW:LDBLCLICK(0)
   Called from: .\source\classes\CONTROL.PRG => TCONTROL:LDBLCLICK(0)
   Called from: .\source\classes\XBROWSE.PRG => TXBROWSE:LDBLCLICK(0)
   Called from:  => TWINDOW:HANDLEEVENT(0)
   Called from: .\source\classes\CONTROL.PRG => TXBROWSE:HANDLEEVENT(0)
   Called from: .\source\classes\WINDOW.PRG => _FWH(0)
   Called from:  => DIALOGBOX(0)
   Called from: .\source\classes\DIALOG.PRG => TDIALOG:ACTIVATE(0)
   Called from: C:\SarWin\Source\SarWin1b.Prg => EDITAR(688)
   Called from: C:\SarWin\Source\SarWin1b.Prg => (b)LABARRA(462)
   Called from: .\source\classes\BTNBMP.PRG => TBTNBMP:CLICK(0)
   Called from: .\source\classes\BTNBMP.PRG => TBTNBMP:LBUTTONUP(0)
   Called from:  => TWINDOW:HANDLEEVENT(0)
   Called from: .\source\classes\CONTROL.PRG => TCONTROL:HANDLEEVENT(0)
   Called from: .\source\classes\BTNBMP.PRG => TBTNBMP:HANDLEEVENT(0)
   Called from: .\source\classes\WINDOW.PRG => _FWH(0)
   Called from:  => WINRUN(0)
   Called from: .\source\classes\WINDOW.PRG => TMDIFRAME:ACTIVATE(0)
   Called from: C:\SarWin\Source\SarWin.Prg => MAIN(125)

System
======
   CPU type: Intel(R) Pentium(R) CPU G645 @ 2.90GHz 2900 Mhz
   Hardware memory: -311 megs

   Free System resources: 90 %
        GDI    resources: 90 %
        User   resources: 90 %

   Compiler version: xHarbour build 1.1.0 Intl. (SimpLex) (Rev. 6195)
   Windows version: 6.2, Build 9200

   Windows total applications running: 60
      1 MSCTFIME UI
      2 Default IME
      3 GDI+ Window
      4 Conmutación de tareas
      5 RFLed
      6 HPBeatsOSD
      7 Network Flyout
      8 Adobe Reader
      9 Soporte ActiveX - Visualizar un achivo  *.PDF Usando Adobe Reader
     10 sw
     11 DDE Server Window
     12 transport Window
     13 _acroT_win
     14 _acroS_win
     15 Consulta a solicitud
     16 © 2014 Sistema para Administrar Requisiciones Build 26/Feb/2014 localhost
     17 xMate - C:\SarWin\SarWin.xhp
     18 MED CX - [C:\SarWin\Source\SarWin1b.Prg]
     19 Debug window C:\SarWin\SarWin.Exe (0 errors, 0 warnings)
     20 Skype™ - aresbu@outlook.com
     21 100% completado
     22 JavaUpdate SysTray Icon
     23 CWNPTransportImpl
     24 DPHelper
     25 WinAMRestoreWnd
     26 HelperMsgListenerWnd
     27 About
     28 LED HOTKEY SETUP-HPID09
     29 LED HOTKEY KEYBOARD-HPID09
     30 HIDUSBKEYMSG
     31 PDI_Status_Indicator_Window
     32 PDI_DTPopupMgr_Wnd
     33 BATTERY INDICATOR - HPID09
     34 OSD Manager
     35 HIDList 2.20.00 (Release)
     36 CLML Window
     37 C:\Users\Armando\AppData\Roaming\Skype
     38 Microsoft Office OneNote 2007 - Barra de tareas de Windows
     39 Sigmatel-IDT-SysTray
     40 PersistWndName
     41 HkWndName
     42 MS_WebcheckMonitor
     43 BluetoothNotificationAreaIconWindowClass
     44 Windows Push Notifications Platform
     45 Medidor de la batería
     46 Microsoft-Windows-CDesktopAppSpaceElement-4BF42B71-EA88-489E-917F-495A116C3596
     47 FWSesAlWndTitle
     48 SYM_AVPAPP_WINDOW_NAME_{1BE293D4-E7AD-4314-B8C9-C088A7CC1E69}
     49 {2E534F4D-897B-467E-92EF-604ABD3D1C5D}
     50 ccSvcHst
     51 Task Host Window
     52 EXPLORER
     53 HP My Display
     54 {94F11419-869E-47aa-9563-F48591285CAD}
     55 IgfxExt_Wnd_Name
     56 Portrait Display SDK Helper for 64 bits OS
     57 HookManager
     58 Malwarebytes Anti-Malware
     59 DWM Notification Window
     60 Program Manager

Variables in use
================
   Procedure     Type   Value
   ==========================
   TACTIVEX:ERROR
     Param   1:    C    "Message not found"
     Param   2:    C    "TACTIVEX"
     Param   3:    C    "_SRC"
     Param   4:    N    1005
     Local   1:    U    
     Local   2:    O    Class: TACTIVEX
     Local   3:    N    16
   TACTIVEX:MSGNOTFOUND
     Param   1:    C    "_SRC"
     Param   2:    O    Class: TACTIVEX
   TACTIVEX:_SRC
     Param   1:    C    ".\Adjuntos\FACTURA DV91790.PDF"
   SHOWPDF_READER
     Local   1:    O    Class: TWINDOW
     Local   2:    O    Class: TACTIVEX
     Local   3:    U    
     Local   4:    C    ".\Adjuntos\FACTURA DV91790.PDF"
   (b)EDITAR
     Param   1:    N    39
     Param   2:    N    94
     Param   3:    N    1
     Param   4:    O    Class: TXBROWSE
 


Saludos

Re: Cargar y mostrar un archivo PDF

PostPosted: Wed Feb 26, 2014 5:40 pm
by karinha
? cFilePdf := oApp:cPathAdj + ALLTRIM(oRsAdj:Fields("ADJ_FIL"):Value) // Tomo el nombre del archivo PDF de una tabla

Que retorna?

Cual és tú versión de FiveWin?

Esta function funciona bién con mi five FWH13.06.

salu2.

Re: Cargar y mostrar un archivo PDF

PostPosted: Wed Feb 26, 2014 5:44 pm
by Armando
Karinha:

? cFilePdf := oApp:cPathAdj + ALLTRIM(oRsAdj:Fields("ADJ_FIL"):Value) // Tomo el nombre del archivo PDF de una tabla
Que retorna?
Regresa el nombre del archivo .PDF que deseo mostrar, (.\Adjuntos\Poliza Correcta.Pdf) y el archivo sí existe

Cual és tú versión de FiveWin?
FWH0810

Esta function funciona bién con mi five FWH13.06.
Puede ser?

Saludos

Re: Cargar y mostrar un archivo PDF

PostPosted: Wed Feb 26, 2014 6:03 pm
by karinha

Re: Cargar y mostrar un archivo PDF

PostPosted: Wed Feb 26, 2014 6:36 pm
by sysctrl2
* Regresa el nombre del archivo .PDF que deseo mostrar, (.\Adjuntos\Poliza Correcta.Pdf) y el archivo sí existe

Paisa en los Windows recientes tienes que decirle exactamente donde esta el archivo
intenta:
cFilePdf := "Poliza Correcta.Pdf"
cRuta := "\"+CurDir()+'\adjuntos\' + cFilePdf

saludos.

Re: Cargar y mostrar un archivo PDF

PostPosted: Wed Feb 26, 2014 10:37 pm
by carlos vargas
elimina espacios en blancos en la variable o campo que contiene el nombre del archivo
usualmente

FIELD->NOMBRE // 100 espacios
?FIELD->NOMBRE //"c:\polizas\tmp\poliza_102030.pdf .............." aca los puntos son espacios en blanco ya que el foro elimina los espacios en blanco

?file( FIELD->NOMBRE ) //falso
?file( rtrim( FIELD->NOMBRE ) //ok

ya me paso en una ocacion.

salu2

Re: Cargar y mostrar un archivo PDF

PostPosted: Thu Feb 27, 2014 1:05 am
by Armando
Amigos:

Voy a contarles mis peripecias:

Estoy siguiendo el ejemplo de Karinha, pero como ya les comenté recibo un error:

César: Le puse la ruta completa como me sugieres pero no hay de piña
Carlos: Revisé que no haya espacios en blanco pero tampoco se soluciona.

Cambie a FWH1306 y el error desapareció pero ahora el TXBrowse no acepta los siguiente métodos
Code: Select all  Expand view

oBrx:bKeyDown               := { | nKey, nFlags | IIF(nKey == VK_DELETE,DltAdj(oDlg,oBrx),)}
oBrx:blDblClick             := { | nRow, nCol, nKey | MsgInfo("YES")}
 


No tira error simplemente se queda congelado como si fuera a enviar el famoso GPF.

Ya se hizo bolas el engrudo.

Saludos

Re: Cargar y mostrar un archivo PDF

PostPosted: Thu Feb 27, 2014 1:07 pm
by karinha
Code: Select all  Expand view

#include "FiveWin.ch"
#include "xbrowse.ch"

function Main()

   local oDlg, oBrw, nKey := VK_RETURN

   DEFINE DIALOG oDlg SIZE 300, 200

   @ 0, 0 XBROWSE oBrw OF oDlg ARRAY { { "one","two","three" } } AUTOCOLS
     
   oBrw:CreateFromCode()

   oBrw:bKeyDown   = { | nKey, nFlags | IIF( nKey == VK_DELETE, DltAdj( oDlg, oBrw ), ) }

   oBrw:bLDblClick = { | nRow, nCol, nFlags | MsgInfo( "Left Doble Click" ) }
     
   ACTIVATE DIALOG oDlg CENTER ON INIT ( oDlg:oClient := oBrw, oDlg:Resize() )

return nil

Static function DltAdj( oDlg, oBrw )

   ? "Wow... Go on..."

   oBrw:Refresh()

Return Nil
 



Re: Cargar y mostrar un archivo PDF

PostPosted: Thu Feb 27, 2014 4:02 pm
by Armando
Karinha:

Tu ejemplo funciona muy bien pero mi código no va.
Simplemente se queda congelado, no hay GPF solo se queda congelado.

Este es el código de xBrowse

Code: Select all  Expand view

            oBrx:=TxBrowse():New(oFld:aDialogs[2])

                oBrx:nMarqueeStyle          := MARQSTYLE_HIGHLROW       // Con cursor de todo el renglón
                oBrx:nColDividerStyle       := LINESTYLE_LIGHTGRAY
                oBrx:nRowDividerStyle       := LINESTYLE_LIGHTGRAY
                oBrx:lColDividerComplete    := (.F.)                            // (.T.) Matiene siempre llena la pantalla
                oBrx:nHeaderHeight          := 25                               // Altura de los encabezados
                oBrx:nRowHeight             := 22                               // Altura del renglón
                oBrx:nHeaderLines               := 1                                // Número de líneas de encabezados
                oBrx:nDataLines             := 1                                // Número de líneas de detalle
                oBrx:nFooterHeight          := 20                               // Altura del footer
                oBrx:nFooterLines               := 1                                // Número de líneas en el footer
                oBrx:lFooter                    := (.T.)                            // Sí queremos línea de footer
                oBrx:lHScroll                   := (.F.)                            // Quitamos el scroll horizontal
                oBrx:bChange                    := { || PonImagen(oFld,oBrx,oImagen) }

            aCols[ 1]                           := oBrx:AddCol()
                aCols[ 1]:bStrData              := { || IF(oRsAdj:RecordCount() > 0,oRsAdj:Fields("ADJ_FIL"):Value,SPACE(1))}
                aCols[ 1]:cHeader           := "Nombre del archivo"
                aCols[ 1]:nHeadStrAlign     := AL_LEFT
                aCols[ 1]:nDataStrAlign     := AL_LEFT
                aCols[ 1]:nWidth                := 70

                oBrx:blDblClick             := { | nRow, nCol, nKey | MsgInfo("YES")}
               oBrx:l2007                       := (.F.)

                oBrx:nStretchCol                := STRETCHCOL_LAST

                oBrx:bClrHeader := { || {CLR_WHITE,CLR_BLACK} }
                oBrx:bClrStd        := { || {CLR_BLACK,CLR_WHITE} }
                oBrx:bClrFooter := { || {CLR_WHITE,CLR_BLACK} }
                oBrx:nRecSelColor   := oApp:nRowParClr                  // Triangulo de selección
                oBrx:bClrSel        := { || {CLR_BLACK,CLR_WHITE} }
                oBrx:bClrSel        := {|| IF( oRsAdj:AbsolutePosition % oApp:nRowsInt == 0 ,{ CLR_BLACK, oApp:nRowParClr },{ CLR_BLACK, oApp:nRowNonClr }) }
                oBrx:bClrSelFocus   := { || {oApp:nFClrFocus,oApp:nBClrFocus} }

                oBrx:bGoTop    := { || IF( ! oRsAdj:BOF() .AND. ! oRsAdj:EOF(), oRsAdj:MoveFirst(), ) }
                oBrx:bGoBottom := { || IF( ! oRsAdj:BOF() .AND. ! oRsAdj:EOF(), oRsAdj:MoveLast(), ) }
                oBrx:bBof      := { || oRsAdj:BOF() }
                oBrx:bEof      := { || oRsAdj:EOF() }
                oBrx:bBookMark := { | uBm | IF( oRsAdj:BOF() .AND. oRsAdj:EOF(), 0, IF( uBm == NIL, oRsAdj:BookMark, oRsAdj:BookMark := uBm ) ) }
                oBrx:bKeyNo    := { | n | IF( oRsAdj:BOF() .AND. oRsAdj:EOF(), 0, IF( n == NIL, oRsAdj:AbsolutePosition, oRsAdj:AbsolutePosition := n ) ) }
                oBrx:bKeyCount  := {|| oRsAdj:RecordCount() }

                oBrx:SetAdo(oRsAdj)
                oBrx:bClrStd    := {|| IF( oRsAdj:AbsolutePosition % oApp:nRowsInt == 0 ,{ CLR_BLACK, oApp:nRowParClr },{ CLR_BLACK, oApp:nRowNonClr }) }
                oBrx:nRecSelColor   := oApp:nRowParClr

            oBrx:CreateFromResource(201)
 


Nunca aparece el mensaje "YES"

Tal vez tengo algo mal en el script de compilación, uso xMate, si alguien tiene
un script que me proporcione será bienvenido.

Saludos

Re: Cargar y mostrar un archivo PDF

PostPosted: Thu Feb 27, 2014 4:27 pm
by cnavarro
Armando, cambia el bLdblClick por:

Code: Select all  Expand view

 aCols[ 1]:bLDClickData := { |  nRow, nCol, nKeyFlags, oColumn |  ..........    }
 


Como ves debes definir uno para cada columna o asignar el mismo a todas
Prueba asi y nos cuentas que tal.

Re: Cargar y mostrar un archivo PDF

PostPosted: Thu Feb 27, 2014 4:45 pm
by Armando
Cristóbal:

Gracias por la sugerencia, en realidad el browse tiene una sola columna y no uso la edición por celda,
en la versión 0810 va de 100 solo que no funciona el activex para mostrar los PDFs al cambiar de
versión a la 1306 es donde tengo atorado el chamaco.

Saludos