Estoy trabajando con archivos alojados en Servidores FTP, puedo conectarme mostrar y bajar los archivos, pero me gustaría mostrar el avance de la descarga usando barra de progreso de la clase TProgress, tambien probe con la DATA oFtp:exGauge pero no pude hacerla funcionar, tengo el siguiente Código:
Code: Select all
FUNCTION Actualizar(aArchivs,oFTP)
STATIC oFtp
LOCAL oDlg,oBrw,oIco,oCur,oProg,oSay
LOCAL aFiles
oFtp := ServicesFTP():New( cDir,cUsr,cPas,.T.,3000,VAL(cPor) )
DEFINE ICON oIco RESOURCE "19"
DEFINE CURSOR oCur RESOURCE "FLECHA"
DEFINE DIALOG oDlg RESOURCE "ACTUALIZA" ICON oIco TITLE "Archivos Actualizados."
REDEFINE xBROWSE oBrw ID 101 OF oDlg
REDEFINE SAY oSay ID 102 OF oDlg
oProg:= TProgress() :REDEFINE(103,oDlg)
oBrw:SetArray(aArchivs, .T., 1)
oBrw:l2007 := .T.
oBrw:nMarqueeStyle := 7
oBrw:lFooter := .F.
oBrw:lHScroll := .F.
oBrw:lVScroll := .F.
oBrw:nColDividerStyle := LINESTYLE_NOLINES
oBrw:nRowDividerStyle := LINESTYLE_NOLINES
oBrw:nRowHeight := 20
oBrw:lAllowColSwapping := .F.
oBrw:lMultiSelect := .F.
oBrw:lColDividerComplete := .T.
oBrw:oFont := oApp:FontTaB11
oBrw:aCols[1]:cHeader := "Archivo"
oBrw:aCols[1]:nDataStrAlign := 3
oBrw:aCols[1]:nHeadStrAlign := 2
oBrw:aCols[1]:nWidth := 99
oBrw:aCols[2]:cHeader := "Tamaño"
oBrw:aCols[2]:nDataStrAlign := 3
oBrw:aCols[2]:nHeadStrAlign := 2
oBrw:aCols[2]:nWidth := 80
oBrw:aCols[3]:cHeader := "Fecha"
oBrw:aCols[3]:nDataStrAlign := 3
oBrw:aCols[3]:nHeadStrAlign := 2
oBrw:aCols[3]:nWidth := 85
oBrw:aCols[4]:cHeader := "Hora"
oBrw:aCols[4]:nDataStrAlign := 3
oBrw:aCols[4]:nHeadStrAlign := 2
oBrw:aCols[4]:nWidth := 80
oProg:oCursor := oCur
oProg:SetRange( 00, 99 )
oProg:SETPOS(0)
oSay:oCursor := oCur
oSay:oFont := oApp:FontTaB11
oSay:SetText("Bytes copiados: 0 Bytes")
oDlg:lHelpIcon:= .F.
oDlg:oCursor:= oCur
oDlg:bStart:= {|| DownFils(aArchivs,oSay,oProg) }
ACTIVATE DIALOG oDlg CENTERED
RETURN Nil
//-----------------------------------------------------------------------------------------------------------------//
STATIC FUNCTION DownFils(aArchivs,oSay,oProg)
LOCAL nFiles,cFile,nTotal
LOCAL cFileMsg:= ""
LOCAL cDestino:= oApp:cDirApp+"TMP"
IF !lIsDir(cDestino)
lMkDir(cDestino)
ENDIF
oFtp:oFtp:Cwd(oFtp:GetPath())
FOR nFiles:= 1 TO LEN(aArchivs)
cFile:= RTRIM(aArchivs[nFiles,1])
nTotal:= aArchivs[nFiles,5]
oFtp:exGauge:= ( ShowGauge(nTotal, cFile, oSay) ) //-> Aki me pierdo..
oFtp:oFtp:DownLoadFile( cDestino + "\" + cFile, cFile )
SysRefresh()
NEXT
FOR nFiles:= 1 TO LEN(aArchivs)
cFile:= RTRIM(aArchivs[nFiles,1])
FERASE(cDestino + "\" + cFile)
NEXT
lRMDir(cDestino)
RETURN Nil
IF ! Empty( ::exGauge )
hb_ExecFromArray( ::exGauge, { nSent, nSize, Self } )
ENDIF
Es posible mostrar la barra de progreso que avance mientras se descarga el archivo, y saber cuentos bytes han descargado para mosrtarlo en el say, ¿Cómo hacerlo..? No encontre un ejemplo funcional en el foro.
Maestro Antonio: ojala que pueda leer mi mensaje.
Gracias de antemano.