Función para escoger varios archivos.

Función para escoger varios archivos.

Postby FiveWiDi » Tue Apr 15, 2014 9:51 am

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,
Un Saludo
Carlos G.

FiveWin 24.02 + Harbour 3.2.0dev (r2403071241), BCC 7.7 Windows 10
FiveWiDi
 
Posts: 1083
Joined: Mon Oct 10, 2005 2:38 pm

Re: Función para escoger varios archivos.

Postby MarioG » Tue Apr 15, 2014 1:07 pm

Carlos;
Si entiendo bien tu pregunta, al voleo, te diría que podes crear tu propia función con Directory(), función de [x]Harbour, luego con xBrowse y multiselección podes llegar a lo que estas pretendiendo

saludos
Resistencia - "Ciudad de las Esculturas"
Chaco - Argentina
User avatar
MarioG
 
Posts: 1380
Joined: Fri Oct 14, 2005 1:28 pm
Location: Resistencia - Chaco - AR

Re: Función para escoger varios archivos.

Postby FranciscoA » Tue Apr 15, 2014 3:25 pm

Aqui tienes un ejemplo completo. Es parte del codigo de un Sistema de Nominas que hice para una empresa de estibadores portuarios.
Adaptalo a tus necesidades.
Code: Select all  Expand view
//---------------------//
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
 

Saludos.
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
FranciscoA
 
Posts: 2114
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: Función para escoger varios archivos.

Postby MarioG » Tue Apr 15, 2014 6:15 pm

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.


Francisco, me podrias pasar tu correo-e, gracias
Resistencia - "Ciudad de las Esculturas"
Chaco - Argentina
User avatar
MarioG
 
Posts: 1380
Joined: Fri Oct 14, 2005 1:28 pm
Location: Resistencia - Chaco - AR

Re: Función para escoger varios archivos.

Postby karinha » Tue Apr 15, 2014 6:57 pm

Code: Select all  Expand view

#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
 


João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7343
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Función para escoger varios archivos.

Postby FranciscoA » Tue Apr 15, 2014 8:06 pm

Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
FranciscoA
 
Posts: 2114
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: Función para escoger varios archivos.

Postby FiveWiDi » Thu Apr 17, 2014 7:28 am

Gracias a todos,

Voy a ver como lo hago, seguramente tomaré como ejemplo los que habéis dejado en el hilo.

Muchas gracias,
Un Saludo
Carlos G.

FiveWin 24.02 + Harbour 3.2.0dev (r2403071241), BCC 7.7 Windows 10
FiveWiDi
 
Posts: 1083
Joined: Mon Oct 10, 2005 2:38 pm


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 18 guests