Carga de ListBox con archivos de directorio

Desarrollo de Macros y programación en UNO, usar las API, llamar programas externos...

Carga de ListBox con archivos de directorio

Notapor Chelo2 » Mié Ene 31, 2018 5:26 pm

Con el siguiente código cargo en un ListBox de un cuadro de diálogo todos los archivos que se encuentran en una carpeta del disco y con el segundo código, me permite seleccionar de ese ListBox el archivo que deseo y lo abre con el programa de pdf predeterminada en la pc.

Código: Seleccionar todo   Expandir vistaContraer vista
'=======================================================================
'VISOR DE ARCHIVOS
'=======================================================================


Dim Lista As Object
Dim mDatos As String
Dim sInfo As String

Sub Abre_Visor
Dim oDialogo as Object
Dim oControl as Object
Dim mDatos () As String

'CARGA EL DIALOGO
   
   DialogLibraries.LoadLibrary("Standard")
   oDialogo=Createunodialog(DialogLibraries.Standard.Dg_Visor)
   Call Lee_Ruta
   
'CARGA EL CONTROL      
   Lista = oDialogo.getcontrol ("ListBox1")
      
'CARGA EL LISTBOX CON LOS DATOS DEL DIRECTORIO         
   sInfo = Dir("D:\AOOSUR\",0)
   Do While sInfo>""
      'MsgBox cArchivo
      sInfo=Dir
      Lista.addItem( sInfo, Lista.ItemCount)   
   Loop
   'MsgBox "No quedan más archivos"
   Lista.addItem( sInfo, Lista.ItemCount)
   
   oDialogo.Execute()

End Sub

'SELEECIONA EL ARCHIVO Y LO ABRE
Sub Selec_Arch
dim Ruta As String
   
      sSeleccionado = Lista.getSelectedItem()
      Ruta = Camino & "\" & sSeleccionado
      
   'Abre el documento en el visor predeterminado
      sys = CreateUnoService("com.sun.star.system.SystemShellExecute")
      sys.execute( Ruta, "", 0)
      
End Sub





Hasta ahora funcionó de maravillas, pero a medida que fueron creciendo los archivos pdf dentro de la carpeta, se fue haciendo mucho más lenta la carga.

Mi consulta es la siguiente: ¿hay alguna forma de cargar de manera más ágil el ListBox??

Desde ya muchas gracias a quien pueda ayudarme con este tema.

Un saludo desde Buenos Aires, Argentina.

Chelo2
OpenOffice 4.1.3 en Windows 7
Chelo2
 
Mensajes: 100
Registrado: Mié Ago 14, 2013 4:25 am
Ubicación: Lomas de Zamora, Buenos Aires, Argentina

Re: Carga de ListBox con archivos de directorio

Notapor Longi » Sab Feb 03, 2018 8:37 am

Buenas!

Echa un vistazo a esto:

https://forum.openoffice.org/es/forum/viewtopic.php?f=31&t=13426

Creo que era lo que en un principio buscabas, pero encontraste ese otro camino, que va muy bien, pero consume recursos. Esto es un filepicker que sí que va a una dirección concretada previamente.

Un saludo!
Openoffice 4.1.5, en Windows 10
Openoffice 4.1.3, en Windows 7
Libreoffice 6.0, en Windows 10
Longi
 
Mensajes: 378
Registrado: Dom Ene 20, 2013 9:05 pm
Ubicación: Ourense, Galicia, España

Re: Carga de ListBox con archivos de directorio

Notapor Chelo2 » Mié Feb 07, 2018 8:28 pm

 Editado:  
Muchas gracias Longi por tu respuesta.
Lo he probado y funciona muy bien. Como se trataba de archivos pdf, los abría con Writer y se mostraba raro, pero reemplacé la fila:

Código: Seleccionar todo   Expandir vistaContraer vista
'Y lo abrimos
'oDoc = StarDesktop.loadComponentFromURL( sRuta, "_blank", 0, mOpciones() )


por:

Código: Seleccionar todo   Expandir vistaContraer vista
'Abre el documento en el visor pdf predeterminado
      oDoc = CreateUnoService("com.sun.star.system.SystemShellExecute")
      oDoc.execute( sRuta, "", 0)


Y funcionó perfecto.
Pero en realidad trataba de evitar el filepicker y lo hacía cargando los archivos en el cuadro de lista porque quiero evitar que el usuario pueda manipular o eliminar involuntariamente alguno de los archivos.

Dejo abierto el hilo por si surge alguna otra posibilidad, o alguna manera de limitar el FilePicker para sólo abrirlo y que no se pueda borrar. Sino, utilizaré tu sugerencia que hace lo que necesito y de manera rápida.

Un saludo desde buenos Aires, y nuevamente muchas gracias.
OpenOffice 4.1.3 en Windows 7
Chelo2
 
Mensajes: 100
Registrado: Mié Ago 14, 2013 4:25 am
Ubicación: Lomas de Zamora, Buenos Aires, Argentina

Re: Carga de ListBox con archivos de directorio

Notapor gustavodiaz00 » Jue Feb 08, 2018 3:35 pm

Hola

Te dejo un codigo para que lo analices y veas si te sirve

Código: Seleccionar todo   Expandir vistaContraer vista

   cArchivo = Dir(Ruta & "/*.ods", 0)
   
    ' Leo la cantidad de archivos
   
    i = 0

    do While cArchivo > ""
      cArchivo=Dir
      i = i + 1
    Loop

    ' Redimensiono la matriz para almacenar los archivos
    ReDim Archivos(i - 1) As String
    'Cargo la matriz con los nombres
    i = 0
    cArchivo = Dir(Ruta & "/*.ods", 0)
    do While cArchivo>""
      Archivos(i) = cArchivo
      cArchivo=Dir
      i = i + 1
    loop

    'Cargo   el control con la matriz
    for j = 0 to i- 1
     Dialog1.getControl("Archivos").addItem(Archivos(j), j)
    next
   end if



Cargo los archivos en una matriz y despues la asigno al control.

saludos.
LibreOffice 5.3.5.2 en opensuse leap 42.3
Avatar de Usuario
gustavodiaz00
 
Mensajes: 43
Registrado: Mié Abr 26, 2017 1:29 am
Ubicación: Argentina, San Nicolás de los Arroyos


Volver a Macros y API UNO

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado