Como puedo implementarle una barra de estado del proceso cuando valla armado o recuperando la Informacion (Meter?)
Code: Select all | Expand
#include 'dob.ini'
static mUBI_ORI
static mUBI_DES
static mNOMARCHIVO
Function BackupZIP()
local oDlgCar
local lSalir:= .f.
local oFont1
dbcloseall()
DEFINE FONT oFont1 NAME 'Arial' SIZE 0,-15 BOLD
DEFINE DIALOG oDlgCar FROM 0, 0 TO 12, 40 ;
TITLE 'GUARDAR / RECUPERAR INFORMACION'
@ 1, 8 BUTTON 'Guardar Informacion' OF oDlgCar SIZE 60, 12 ;
ACTION ( ArmarBackup(1) )
@ 2, 8 BUTTON 'Recuperar Informacion' OF oDlgCar SIZE 60, 12 ;
ACTION ( ArmarBackup(2) )
@ 3, 8 BUTTON 'Salir' OF oDlgCar SIZE 60, 12 ;
ACTION ( oDlgCar:End() )
ACTIVATE DIALOG oDlgCar CENTERED
dbcloseall()
return .t.
*-----------------------------------------------------------------------------
Function ArmarBackup(Arma1Extrae2)
local oDlgCar
local lSalir:= .f.
local oFont1
local oUBI_ORI , oUBI_DES
local xUBI_ORI:=CurDrive()+":\"+CurDir()+"\"
mUBI_ORI:=xUBI_ORI+SPACE(60-LEN(xUBI_ORI))
mUBI_DES:=xUBI_ORI+SPACE(60-LEN(xUBI_ORI))
mNOMARCHIVO:=SPACE(20)
dbcloseall()
DEFINE FONT oFont1 NAME 'Arial' SIZE 0,-9 //BOLD
DEFINE DIALOG oDlgCar FROM 0, 0 TO 15, 80 ;
TITLE If(Arma1Extrae2==1,'GUARDAR','EXTRAER')+' INFORMACION'
@ 1.750, 1 SAY 'Carpeta de Origen' of oDlgCar
@ 1.500, 9 BUTTON 'Buscar' OF oDlgCar SIZE 20, 10 Font oFont1 ;
ACTION( mUBI_ORI:=DIRECMain() ,;
mUBI_ORI:=alltrim(mUBI_ORI)+'\' ,;
mUBI_ORI:=mUBI_ORI+space(60-len(mUBI_ORI)) ,;
oUBI_ORI:refresh() )
@ 2,10 GET oUBI_ORI var mUBI_ORI of oDlgCar
@ 2.625, 1 SAY 'Carpeta de Destino' of oDlgCar
@ 2.250, 9 BUTTON 'Buscar' OF oDlgCar SIZE 20, 10 Font oFont1 ;
ACTION( mUBI_DES:=DIRECMain() ,;
mUBI_DES:=alltrim(mUBI_DES)+'\' ,;
mUBI_DES:=mUBI_DES+space(60-len(mUBI_DES)) ,;
oUBI_DES:refresh() )
@ 3,10 GET oUBI_DES var mUBI_DES of oDlgCar
If Arma1Extrae2 == 1
@ 3.500, 1 SAY 'Nombre de Archivo ZIP' of oDlgCar
@ 4,10 GET mNOMARCHIVO of oDlgCar
@ 4, 10 BUTTON 'Guardar Informacion' OF oDlgCar SIZE 60, 12 ;
ACTION ( Backup1(alltrim(mNOMARCHIVO),alltrim(mUBI_ORI),alltrim(mUBI_DES)) ,;
oDlgCar:End() )
Else
@ 4, 10 BUTTON 'Extraer Informacion' OF oDlgCar SIZE 60, 12 ;
ACTION ( Backup2(alltrim(mUBI_DES),alltrim(mUBI_ORI),alltrim(mNOMARCHIVO)) ,;
oDlgCar:End() )
EndIf
@ 4, 30 BUTTON 'Salir' OF oDlgCar SIZE 60, 12 ;
ACTION ( oDlgCar:End() )
ACTIVATE DIALOG oDlgCar CENTERED
dbcloseall()
return .t.
*----------------------------------------------------------- GUARDAR INFORMACION
Function Backup1(cFile,cPath,mUBI_DES,cPass)
local aFiles , nI , aZip:={} , nFiles , cDbf
local oMeter2 , nRow:=1
If FILE(mUBI_DES+cFile+'.zip') .and. !MsgNoYes(oemtoansi('Archivo Existente, desea Reemplezar ?'),;
oemtoansi('Elija opcion SI/NO') )
return .t.
EndIf
If FILE(cFile+'.zip')
FErase(cFile+'.zip')
EndIf
aFiles:=Array(ADir(cPath+"*.DBF"))
nFiles:=aDir(cPath+"*.DBF",aFiles)
FOR nI=1 TO nFiles
cDbf:=cPath+aFiles[nI]
AAdd(aZip,cDbf)
CursorWait()
NEXT nI
aFiles:=Array(ADir(cPath+"*.DBT"))
nFiles:=aDir(cPath+"*.DBT",aFiles)
FOR nI=1 TO nFiles
cDbf:=cPath+aFiles[nI]
AAdd(aZip,cDbf)
CursorWait()
NEXT nI
aFiles:=Array(ADir(cPath+"*.FTP"))
nFiles:=aDir(cPath+"*.FTP",aFiles)
FOR nI=1 TO nFiles
cDbf:=cPath+aFiles[nI]
AAdd(aZip,cDbf)
CursorWait()
NEXT nI
FOR nI=1 TO Len(aZip)
CursorWait()
HB_ZipFile(mUBI_DES+cFile,aZip[nI],,,,,.F.)
NEXT nI
MsgInfo('Carpeta de Origen: '+cPath+chr(13)+;
'Carpeta de Destino: '+mUBI_DES+chr(13)+;
'Archivo/s Guardados en: '+cFile+chr(13)+;
'Cantidad de Archivos Guardados: '+str(Len(aZip),3) ,'Información General del Proceso')
return .t.
*----------------------------------------------------------- RECUPERAR INFORMACION
Function Backup2(cPath,mUBI_ORI)
local aFiles
local cFile
cFile:= cGetFile32( "ZIP (*.zip)| *.zip|" +;
"Seleccione un archivo de ZIP",3)
msginfo(cFile)
aFiles:=HB_GetFilesInZip(cFile)
HB_UnZipFile(cFile,,.T.,,cPath,aFiles,NIL)
MsgInfo('Carpeta de Origen: '+mUBI_ORI+chr(13)+;
'Carpeta de Destino: '+cPath+chr(13)+;
'Archivo/s Recuperados de: '+cFile+chr(13)+;
'Cantidad de Archivos Recuperados: '+str(Len(aFiles),3) ,'Información General del Proceso')
return .t.