SELECCIONAR MULTIPLES ARCHIVOS

217 views
Skip to first unread message

adem adem

unread,
Jan 1, 2022, 9:30:04 PM1/1/22
to Comunidad de Visual Foxpro en Español
HOLA
NECESITO VUESTRA AYUDA, EN COMO PUEDO NOSTRAR LOS ARCHIVOS SELECCIONADO, CON SUS RESOECTOS; RUTA/NOMBRE, TAMAÑO ATRAVES DE UN DIALOG OLECONTROL CON EL FIN DE CARGARLOS EN UN CURSOR, LO INTENTE PERO EL ARRY ME MUESTRA TODOS LOS ARCHIVO DE LA CARPETA NO LO QUE YO SELECCIONO..ATENTAMENTE

Zarlu

unread,
Jan 2, 2022, 10:16:08 AM1/2/22
to Comunidad de Visual Foxpro en Español
Buenos días 76xademx76 !

Para aprender contigo...

Cual ese control que mencionas?
Podrías mostrar imágenes o código de lo que estas haciendo? Para captar el contexto

Por ahora entiendo que quieres mostrar los archivos de una carpeta, de ahí seleccionar algunos y llevar la información a un cursor

zarlu
Chetumal, Quintana Roo, México

adem adem

unread,
Jan 2, 2022, 7:52:52 PM1/2/22
to publice...@googlegroups.com
Hola 
Me alegra mucho a que me respondes, y muy agradecido estoy, te comento que, a través de un Cursor que almacena todo el contenido de la carpeta, inserto los datos lo que necesito en otro Cursor,
esto por no saber como crear un array que escoja solo lo seleccionado. De todos modos te mando el código que va en un botton en el evento Click después de crear un Diálogo Command...
Y GRACIAS NUEVAMENTE..

--
Blog de la Comunidad Visual FoxPro en Español: http://comunidadvfp.blogspot.com
---
Has recibido este mensaje porque estás suscrito al grupo "Comunidad de Visual Foxpro en Español" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a publicesvfoxp...@googlegroups.com.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/publicesvfoxpro/c855865b-7c39-41fb-bf35-64660f239dden%40googlegroups.com.
SELECT FILE.txt
Active X(OleControl).bmp

adem adem

unread,
Jan 3, 2022, 6:02:56 AM1/3/22
to publice...@googlegroups.com
HOLA
Pues, para mostrarte más o menos la idea, hice una modificación a un ejemplo que encuentre aquí en este foro,
y lo que quiero es realizar la tarea solamente con un Cursor que se encarga de mostrar lo seleccionado de los archivos no dos Cursores,
Nuevamente Gracias por tu tiempo.

link de descarga:

Zarlu

unread,
Jan 3, 2022, 12:05:20 PM1/3/22
to Comunidad de Visual Foxpro en Español
Buenos días 76xademx76!

A ver así en el código del botón:

&& EN UN BOTTON EVENT CLICK
************************************************
LPARAMETERS tcCarpeta, tcEsquema, tcCursor, tcAtributos, tlMayusculas
LOCAL lcAlias, lnCualCase, lnCantidadArchivos, lnI, lnJ,nFlags, lcCurDir,;
 lcFileName, lcFileList, lcPath

SET deleted on
lcCurDir = Curdir()

With Thisform
        .olecommdlog.Filter = [All Files|*.*|JPG Files|*.jpg|BMP Files|*.bmp]
        .olecommdlog.FilterIndex = 1
        .olecommdlog.DialogTitle = [Seleccionar Archivos]
        .olecommdlog.MaxFileSize = 32767
        .olecommdlog.Flags = Bitor(0x4, 0x10, 0x200, 0x800, 0x1000, 0x8000, 0x40000, 0x80000)
        .olecommdlog.InitDir = [C:\]
        .olecommdlog.ShowOpen()
        lcFileList = .olecommdlog.FileName
        lcFileName = []
        lcPath = []
Endwith
****************************************************************************************
CREATE CURSOR FILENAMES (ID int autoinc, CUR_NOMBRE C(50), CUR_TAMANO N( 10),;
 FULL_NOMBRE C(60), CUR_FECHAX D, CUR_HORAXX C(  8), CUR_ATRIBU C(  5), ESTADO C(1))
****************************************************************************************
Do Case
        Case Empty(lcFileList)
                Use In Select([FILENAMES])
        Case  Occurs(Chr(0),lcFileList) = 0
                lcFileName = JustStem(lcFileList) + "." + JustExt(lcFileList)
                Insert Into FILENAMES (CUR_NOMBRE, FULL_NOMBRE, ESTADO) Values (lcFileName , lcFileList, '1')
        Otherwise
                For i = 0 To Occurs(Chr(0),lcFileList)
                        If i = 0
                                lcPath = Substr(lcFileList,1,At(Chr(0),lcFileList))
                                lcFileList = Substr(lcFileList,At(Chr(0),lcFileList) + 1)
                        Else
                                If Chr(0) $ lcFileList
                                        lcFileName = Substr(lcFileList,1,At(Chr(0),lcFileList))
                                        lcFileList = Substr(lcFileList,At(Chr(0),lcFileList) + 1)
                                Else
                                        lcFileName = lcFileList
                                Endif
                                Insert Into FILENAMES ;
                                        (CUR_NOMBRE, FULL_NOMBRE, ESTADO);
                                        VALUES ;
                                        (lcFileName,((Addbs(lcPath) + lcFileName)), '1')
                        Endif
                ENDFOR
                do while .t.
                  lcAlias = ALIAS()
                    tcCarpeta    = Iif(Empty(tcCarpeta)   , Sys(5) + Curdir(), tcCarpeta)
                  tcEsquema    = Iif(Empty(tcEsquema)   , "*.*"            , tcEsquema)
                  tcCursor     = Iif(Empty(tcCursor)    , "CUR_ARCHIVOS"   , tcCursor)
                  tcAtributos  = Iif(Empty(tcAtributos) , "A"              , Upper(tcAtributos))
                  tlMayusculas = Iif(Empty(tlMayusculas), .F.              , tlMayusculas)
                  lnCualCase   = Iif(tlMayusculas       , 0                , 1)
                         IF Used(tcCursor) THEN
                                SELECT (tcCursor)
                                DELETE ALL IN CUR_ARCHIVOS
                                *ZAP
                        ELSE
                                CREATE CURSOR (tcCursor) ( ;
                                    CUR_NOMBRE C(50), ;     && Nombre del archivo/carpeta
                                    CUR_TAMANO N( 10), ;     && Tamaño en bytes
                                      CUR_FECHAX D     , ;     && Fecha de creación o última modificación
                                    CUR_HORAXX C(  8), ;     && Hora de creación o última modificación
                                    CUR_ATRIBU C(  5)  ;     && Atributos: A=Archivo común, D=carpeta, H=oculto, S=sistema, R=sólo lectura
                                    )
                        ENDIF
                        lnCantidadArchivos = ADIR(laArchivos, AddBS(tcCarpeta) + tcEsquema, tcAtributos, lnCualCase)
                        FOR lnI = 1 TO lnCantidadArchivos
                                lnJ = (lnI - 1) * 5
                                INSERT INTO (tcCursor);
                                       (        CUR_NOMBRE         , CUR_TAMANO         , CUR_FECHAX         , CUR_HORAXX         , CUR_ATRIBU         ) ;
                                        VALUES (laArchivos[lnJ + 1], laArchivos[lnJ + 2], laArchivos[lnJ + 3], laArchivos[lnJ + 4], laArchivos[lnJ + 5])
                        ENDFOR
                        IF !Empty(lcAlias) THEN
                                SELECT (lcAlias)
                        ENDIF
       
                        Exit
                Enddo
ENDCASE
****************************************************************************************
SELECT cur_archivos
SCAN
        lcNombre=ALLTRIM(cur_archivos.cur_nombre)
        lnSize=cur_archivos.cur_tamano
        lcFecha=CUR_ARCHIVOS.cur_fechax
        lcHora=CUR_ARCHIVOS.cur_horaxx
        lcAtrib=CUR_ARCHIVOS.cur_atribu
        UPDATE filenames from cur_archivos SET cur_tamano=lnSize,;
                cur_fechax = lcFecha,;
                  cur_horaxx = lcHora,;
                  cur_atribu = lcAtrib ;
                WHERE filenames.cur_nombre=lcNombre
ENDSCAN
SELECT FILENAMES
GO TOP
BROWSE
Set Defa To (lcCurDir)

Suerte
zarlu
Chetumal, Quintana Roo, México

adem adem

unread,
Jan 3, 2022, 4:01:47 PM1/3/22
to publice...@googlegroups.com
Hola de nuevo , quiero darte las gracias por ayudarme, el código funciona bien , y está bien ordenado, aunque la única pega,  son dos cursores en vez de uno, pero mientras funcione , todo es perfecto.
Un saludo Campeón🙏🙏🙏🙏 
   

adem adem

unread,
Jan 10, 2022, 1:57:51 PM1/10/22
to publice...@googlegroups.com
HOLA  ZARLU ,de nuevo por aqui buscando ayuda,  ; el tema es que tengo una carpeta de fotos y una tabla (Tabla1), dicha tabla se rellena mediante un Cursor (Curs_tmp),donde se almacena, nombres de productos , fechas y más , estos datos cada vez  se rellenan y se borran según la necesidad. Todo se  muestra en un listbox , en la misma tabla tengo un campo (Tabla1.imagen) se rellena con la  ruta de la imagen  de cada artículo. Mi pregunta es:  cómo hago para mostrar las fotos respectivas  cada vez que se rellena el listbox mediante el botón buscar. El código que empleo no me lo muestra pero si al ponerlo en el evento clic del listbox y solo funciona haciendo  clic en cada registro.
   
SELECT Tabla1

n = thisform.list1.ListIndex 
FOR i = 1 TO n
LOCATE FOR img = thisform.list1.List(n,2)
IF FOUND()
Thisform.list1.Picture = img
ENDIF  
NEXT n

thisform.list1.Refresh 

ATENTAMENTE🙏 

El dom, 2 ene 2022 a las 16:16, Zarlu (<not...@prodigy.net.mx>) escribió:
--

Zarlu

unread,
Jan 10, 2022, 4:41:39 PM1/10/22
to Comunidad de Visual Foxpro en Español
Buenas tardes 76xademx76 !

A ver si esto funciona:
WITH Thisform.list1
.RowSourceType=2
.RowSource="tabla.dato"
SCAN
.AddItem(ALLTRIM(tabla.dato))
ENDSCAN
a=1
SCAN
.Picture(a)=(ALLTRIM(tabla.ruta))
a=a+1
EndScan
.Value=1
EndWith
ThisForm.Refresh

Asumo que toma la información de una tabla  o cursor filtrada que contiene lo que llenará el listbox

Sin título.png

Suerte

zarlu
Chetumal, Quintana Roo, México

Zarlu

unread,
Jan 10, 2022, 4:49:20 PM1/10/22
to Comunidad de Visual Foxpro en Español
Que tal 76xademx76 !

Corrección. Omite el origen de datos
WITH Thisform.list1
*        .RowSourceType=2
*        .RowSource="tabla.dato"

        SCAN
                .AddItem(ALLTRIM(tabla.dato))
        ENDSCAN
        a=1
        SCAN
                .Picture(a)=(ALLTRIM(tabla.ruta))
                a=a+1
        ENDSCAN
        .Value=1
EndWith        
ThisForm.Refresh

zarlu
Chetumal, Quintana Roo, México

adem adem

unread,
Jan 10, 2022, 7:45:49 PM1/10/22
to publice...@googlegroups.com
HOLA ZARLU 
Bueno este codigo funciona  pero no del todo, al hacer clic sobre  el botón buscar sale todo perfecto, pero  hacer clic sobre algún registro en el listbox, todos los registros toman la misma foto, parpadeo al mover el cursor, y no puedes mantener un registro seleccionado, y por último al perder el foco desaparecen las fotos hasta que le vuelves un clic.
Intente poner el código en el init del form o del listbox o en el  evento click , pero lo mismo...
me ha dado un dolor de cabeza.. agradezco tu rápido repuesto , aver que me sugieres..
UN SALUDO DE TODO CORAZÓN.
     


Zarlu

unread,
Jan 10, 2022, 9:57:07 PM1/10/22
to Comunidad de Visual Foxpro en Español
Qué tal 76xademx76 !

Del código que te sugerí corregí eliminando  "RowSourceType" y "RowSource"

Entonces checa que el listbox en propiedades tampoco tenga nada de eso o en controlsource.
Puntualizo...no debe estar enlazado a ninguna tabla/cursor

zarlu
Chetumal, Quintana Roo, México

adem adem

unread,
Jan 11, 2022, 6:22:42 AM1/11/22
to publice...@googlegroups.com
Hola Zarlu
mil Gracias eres un genio, eres un bendición.
funciona de maravilla.... 🙌👌👍
Mil Graaaaaacias

Reply all
Reply to author
Forward
0 new messages