![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
¡Muy bien! Veo que ya le vas entendiendo. Si me permites, un par de sugerencias.
Aunque quizá no afecte demasiado, toma en cuenta que los ImageList del sistema sólo hace falta obtenerlos una vez. Por ejemplo, en el evento OnCreate del formulario usas ShGetFileInfo pasando una cadena vacía como primer parámetro y usas SendMessage para la asignación de ambos ImageList. Por otro lado, quizá te llegues a percatar de que cuando tienes muchos elementos, el ListView comienza a alentarse para desplegar los iconos. Si notas esto y quieres agilizarlo entonces será momento de usar el ListView en modo virtual. Esto se acerca más al ejemplo que te mencionó Federico en el otro hilo aunque en tu caso sería, pienso, mucho más sencillo, ya que el ejemplo mencionado despliega no sólo archivos de un folder sino además objetos de otros contenedores, tales como el panel de control, mi pc o el entorno de red. // Saludos |
#2
|
|||
|
|||
Roman, estoy viendo que el parámetro Name i ImageList en el procedimiento no son necesarios, verdad? es decir, el parametro name lo puede coger de ListItem.Caption i el parámetro ListView no veo que se use en todo el procedimiento... Tu que opinas? Como simplificarias el procedimiento?
|
#3
|
||||
|
||||
Tal como está, supongo que en efecto son innecesarios. De hecho, difícilmente querrás obtener uno de los iconos en el evento OnClick de un botón.
El ListView ofrece el evento OnGetImageIndex que me parece el más adecuado para esto. El evento pasa como parámetro el Item del que necesita saber su icono. Ahí es donde asignas a Item.Imagendex el valor que obtienes con ShGetFileInfo. Y sí, el parámetro que le pasas sería Item.Caption. // Saludos |
#4
|
||||
|
||||
Te mando dos ejemplos de aplicaciones que usan un ListView para presentar los archivos de una carpeta.
Ambas son iguales excepto porque la segunda (VirtualSysIcons) usa el ListView en modo virtual. Compara los dos ejemplos contra un directorio con muchos archivos, por ejemplo, C:\Windows\System32, para que veas el porqué de usar el modo virtual. Los ejemplos ya están compilados para que veas rápidamente la diferencia. Pero también te mando los códigos fuente. La diferencia entre SysIcons y VirtualSysIcons básicamente está en el método ReadFiles. En SysIcons, ReadFiles agrega directamente los archivos de una carpeta al Listiew. En VirtualSysIcons, ReadFiles agrega sólo los nombres de los archivos en un TStringList auxiliar. Entonces usa el evento OnData del Listiew para llenar los datos del item que se llena a partir de lo guardado en el StringList. El modo virtual se establece poniendo la propiedad OwnerData del ListView en true. // Saludos |
#5
|
||||
|
||||
Hola,
Unos estupendos ejemplos roman. Gracias por compartirlos con nosotros. ![]() |
#6
|
|||
|
|||
Muy interesantes los ejemplos... Muchas gracias, al final he usado el ejemplo del VirtualListView. Muchísimas gracias, esto va cogiendo forma.
|
#7
|
|||
|
|||
Una pregunta gunman...¿como haces para mandar el listado de los archivos/carpetas del servidor al cliente?
|
#8
|
||||
|
||||
Cita:
// Saludos |
#9
|
|||
|
|||
Lo siento si no procedia poner la pregunta pero como ya abri un hilo con algo parecido queria ver si me podia echar una manita...
![]() Lo que queria saber es exactamente "cómo" consigue que en un Listbox, por ejemplo, te aparezca el contenido de una carpeta del servidor, pero veo que debe ser por ftp y yo quiero hacerlo por sockets... Gracias por la respuesta. 1 saludo! Juanma |
![]() |
|
|
![]() |
|