Hola a todos,
Alguién sabría decirme donde puedo encontrar una función que permita escoger varios archivos a la vez de una carpeta?
Muchas gracias,
//---------------------//
Function LiqFinal()
local cSay1:="",oSay1, oSay2, oDlg, oBrw, cItem, aBmp:={}, n:=0
local aCarpetas:={}, aDescri:={}
local aDirectorio := DIRECTORY("*.*", "D")
local oFont
local cTrab:="", cNomb:=""
local aGradBarSelFocus := {{0.65,RGB(228,176,69),RGB(238,235,117)},{0.35,RGB(238,235,117),RGB(159,140,154)}}
local aGradBarSel:= {{1, RGB(108,125,184), RGB(241,222,088)}}
local oCol
local cTitle:="Carpetas disponibles", cRet:=""
//Solo queremos carpetas, no ficheros con extension
for n := 1 to Len( aDirectorio )
if aDirectorio[ n ][ 5 ] == 'D' .and. Left( aDirectorio[ n ][ 1 ], 1 ) != '.'
if SubDirOK( upper(aDirectorio[n][1]) )
AAdd( aCarpetas, aDirectorio[ n ][ 1 ] )
AAdd( aDescri, aDirectorio[ n ][ 1 ] + SPACE(6) + MesAno(UPPER(aDirectorio[n][1])) )
endif
endif
next
if empty(aCarpetas)
MsgAlert("No existen subcarpetas de Periodos Fiscales Historicos. Se mostrará solo datos contenidos en carpeta actual.")
aadd(aCarpetas," ")
aadd(aDescri,"SOLO CARPETA ACTUAL")
endif
for n:=1 to len(aCarpetas) //Agrgar Bmps
aadd(aBmp,".\folder.bmp")
Next
SysRefresh()
cItem:=ALLTRIM(SUBSTR(aCarpetas[1],1,10))
cSay1:= "LIQUIDACION FINAL (Seleccion de periodos a incluir)"
//TAHOMA,VERDANA,NEW TIMES ROMAN,COURIER,COURIER NEW
DEFINE FONT oFont NAME "COURIER NEW" SIZE 0,-14
DEFINE DIALOG oDlg RESOURCE "CARPETAS2" TITLE cTitle TRANSPARENT
REDEFINE SAY oSay1 VAR cSay1 ID 101 OF oDlg
REDEFINE SAY oSay2 PROMPT "Shift+Flecha abajo, o Ctrl+Click para Multi-Seleccionar" ID 102 OF oDlg
REDEFINE XBROWSE oBrw ID 118 OF oDlg ;
ARRAY aDescri AUTOCOLS LINES CELL
WITH OBJECT oBrw
:lRecordSelector := .f.
:lHeader := .f.
:nStretchCol := 1
//:nMarqueeStyle := MARQSTYLE_HIGHLROW //normal
:nMarqueeStyle := MARQSTYLE_HIGHLROWMS //Multiselect
:bClrSel := {|| { nRGB( 0, 0, 0), aGradBarSel } } // para barra de linea selecc cuando el control no tiene el foco
:bClrSelFocus := { || { CLR_BLACK, aGradBarSelFocus } } // para barra de linea selecc cuando el control tiene el foco
:nRowHeight := 20 //altura entre lineas
END
oCol:=oBrw:aCols[1]
WITH OBJECT oCol
//:AddBmpfile( ".\folder.bmp" )
:AddResource( "folder" )
:bBmpData := {|| 1 } //Si hubiese varios bmps, aqui tomamos el primero de la lista en :aaddBmpFile
:lBmpStretch := .t.
:lBmpTransparent := .T.
:nDataBmpAlign := AL_LEFT
END
REDEFINE BUTTONBMP ID 300 OF oDlg BITMAP "CUADRILLA" TEXTRIGHT ;
ACTION ( cTrab:=Personal(.t.,.f.),;
if(!empty(cTrab),(cNomb:=alltrim(personal->Nombres)+" "+alltrim(personal->apellidos), cSay1:="LIQUIDACION FINAL DE: "+cTrab+"-"+cNomb),(cTrab:="",cNomb:="", cSay1:="LIQUIDACION FINAL DE: ",MsgStop("No selecciono trabajador"))), oSay1:Refresh() )
REDEFINE BUTTONBMP ID 301 OF oDlg BITMAP "PRINTER" TEXTRIGHT ;
ACTION ( ImpLiqFin(oBrw,cTrab,cNomb) )
REDEFINE BUTTONBMP ID 302 OF oDlg BITMAP "SALIR" TEXTRIGHT ;
ACTION ( oDlg:End() )
ACTIVATE DIALOG oDlg CENTERED
oFont:End()
Return nil
FranciscoA wrote:Aqui tienes un ejemplo completo. Es parte del codigo de un Sistema de Nominas que hice para una empresa de estibadores portuarios.
Saludos.
#Include "FiveWin.Ch"
#Define CLR_LGREEN nRGB( 190, 215, 190 )
#Define CLR_LGRAY nRGB( 230, 230, 230 )
#Define CLR_VERMELHO nRGB( 255, 000, 000 )
#Define CLR_AMARELO nRGB( 255, 255, 000 )
FUNCTION Main()
LOCAL oSetupDlg, nDriveTo := 1, cDriveTo, nDriveCap := 4
LOCAL lGoOn, aFiles[1], aFileList, x, iDcor, oFont, oBackup
LOCAL aDbfs := Directory( "*.DBF" )
LOCAL oDlg, oBrw, n := 1
LOCAL oAceitar, oCancelar, nKey := VK_RETURN
SET CENTURY ON
SET DATE BRITISH
SET EPOCH TO YEAR( DATE() ) - 30
SET EXCLUSIVE OFF
SET MULTIPLE OFF
If Len( aDbfs ) < 1
Msginfo( "Desculpe Não Achei os Arquivos *.DBF Neste Diretório", ;
"Informação" )
Return
Endif
aSort( aDbfs,,, { |x, y | x[1] < y[1] } )
DEFINE FONT oFont NAME "Arial" SIZE 0, 16 BOLD
DEFINE DIALOG oDlg FROM 6, 20 TO 25, 78 ;
TITLE "Browse dos Arquivos DBFs em: " + ;
CurDir() + " Para Copiar" ;
STYLE nOR( WS_BORDER, WS_THICKFRAME ) ;
COLORS CLR_BLACK, nRGB( 193, 205, 205 )
@ 1, 2 ListBox oBrw Fields aDbfs[n][1], ;
Str(aDbfs[n][2],10,0), ;
Dtoc( aDbfs[n][3] ), ;
aDbfs[n][4] ;
Headers "Nome do Arquivo", ;
"Tamanho", "Data", ;
"Hora" ;
FieldSizes 120,80,80,60 ;
COLOR CLR_HBLUE, CLR_AMARELO ;
FONT oFont ;
Of oDlg Size 200, 100
oBrw:bGotop := { || N := 1 }
oBrw:bGoBottom := { || N := Eval( oBrw:bLogicLen ) }
oBrw:bSkip := { | nWant, nOld | nOld := N , N += nWant,;
N := Max( 1, Min( N, Eval( oBrw:bLogicLen ) ) ),;
N - nOld }
oBrw:bLogicLen := { || Len( aDbfs ) }
oBrw:cAlias := "Array"
//---------------------------------------------------------------------
oBrw:nClrBackHead := CLR_LGREEN // Cor do Fundo do Cabe‡alho
oBrw:nClrBackFocus := CLR_HRED // Cor do Cursor Em Cima do Ötem
oBrw:nClrForeFocus := CLR_AMARELO // cor da letra da barra ativa
oBrw:nClrForeHead := CLR_HRED // Cor nos Headers - Cabe‡alhos
oBrw:nColAct := 1 // Onde o Cursor Vai Iniciar qual coluna?
oBrw:nLineStyle := 3 // Estilo das linhas nos dados da Browse
oBrw:lCellStyle := .T. // S¢ Pinta a celula que o cursor est
// Justifica As Colunas dos Campos Esq. .T. = Centro
oBrw:aJustify := { .F., .F., .F., .F. }
oBrw:lMChange := .F. // Desabilita Mousemove
oBrw:SetFocus() // Refocus on The Browse
oBrw:Refresh() // Estabiliza o Browse/Listbox
// ( Pinta os Dados Novamente )
@ 6.6, 16 Button oBackup ;
PROMPT "&Sigue" Of oDlg ;
Action( oDlg:End() ) ;
SIZE 40, 12 ;
CANCEL
oBackup:cToolTip := "<Click-Me>"
ACTIVATE DIALOG oDlg CENTERED
RETURN NIL
Return to FiveWin para Harbour/xHarbour
Users browsing this forum: Google [Bot] and 18 guests