![]() |
Poner un icono en un TListView según el tipo de archivo
Hola forofos de Delphi!
Estoy desarrollando un cliente FTP y tengo un problemilla, por decirlo así en el procedimiento donde me lista el directorio. Vereís: Cuando me lista un directorio a mi me gustaria que apareciese un icono al lado del nombre de archivo o carpeta (lógico, para acerlo más atractivo), de momento, mi código recore el nombre de la linia y segun el tipo de extensión que tiene el archivo coloca un icono diferente que se encuentra en un ImageList. Ahora surge el problema: cuantos tipos de archivos hay en el mundo? Tropocientosmil, infinitos. Habia pensado en la posibilidad de que el usuario pudiese añadir tipos de archivos y definir sus iconos, pero esto es muy modesto. Después de esta introducción explicando el problema, viene mi pregunta: Cómo (diablos) le asigno al Item del TListView el icono predefinido de Windows para ese tipo de archivo? He buscado alguna función de las APIs, pero no he encontrado nada (no quiero decir que no esté, sólo que no la he encontrado). Muchas gracias... Vaya... el post se ha hecho largo! Gracias de nuevo y espero impaciente vuestra respuesta. |
Tienes que asignarle como lista de imágenes, las imágenes del buffer del sistema
Luego cada el índice de cada ícono tienes que averiguarlo con la función SHGetFileInfo. Te recomiendo ver el código de los ShellCtrls que trae de ejemplo Delphi, o un ejemplo llamado "Virtual Listview" Saludos! |
Muchas gracias, he visto el ejemplo Virtual ListView y creo que empieza a encajar todo. Muchas gracias de nuevo...
|
Como insertar dinamicamente imagenes de archivos en un TreeView?
Cita:
|
El código que indica Federico, te sirve para asociar la lista de iconos del sistema al TreeView y lo que requieres es conocer cual es el índice en esa lista del icono asociado a un archivo. Para ello es que usas la función ShGetFileInfo y sólo requieres el nombre del archivo:
En este ejemplo, paso como parámetro la cadena 'main.pas' a ShGetFileInfo. La función consulta al sistema para saber qué icono está asociado a la extensión .pas y devuelve, en la estructura ShFileInfo, el índice requerido. Ése lo asignarías a la propiedad ImageIndex del nodo, tal como muestra el ejemplo. En este hilo hay un ejemplo adjunto que hice hace un tiempo para llenar un ListView con los archivos de un directorio, mostrando sus iconos respectivo. La técnica es exactamente la misma que para un TTreeView. Ambas componentes tienen un evento OnGetImageIndex que sería el idóneo para usar el código anterior. // Saludos |
1 Archivos Adjunto(s)
Vaya. No sé en qué estaba pensando. El ejemplo del otro hilo no tiene nada que ver. El ejemplo lo adjunto aquí.
// Saludos |
1 Archivos Adjunto(s)
En este otro ejemplo que adjunto, utilizo un TreeView que muestra los directorios, subdirectorios y archivos del folder que se especifique.
// Saludos |
Bonito ejemplo Roman :)
|
Roman, ante todo debo darte las gracias porque he estado buscando este ejemplo por dias, me he desesperado y hasta me escribieron pidiendo que no posteara mas hilo referente a ese tema.
Te explico: Tengo una carpeta cun subcarpetas y archivos de textos, tengo que crear una aplicacion que recorra la carpeta y sub carpetas y archivos "como el explorador de windows" y me lo monte en un ttreeview para con otro componente al hacer click en los archivos se muestre a la derecha. el tema esta que al utilizar tu ejemplo del treeview me da un error cuando hay varias subcarpetas, me puedes ayudar |
Hola Gente... vi los ejemplos de Roman y realmente estan buenisimos.. lo del ListView era lo que buscaba... ahora lo del TreeView no es exactamente lo que necesito.. la cosa es que estoy hciendo una lista de las PC's conectadas en una red y necesitaría ponerle los iconos de "Mis Sitios de Red", he buscado info de las funciones y constantes que se usan en los ejemplos pero no logro encontrar la lista que me representa las "Redes de Microsoft", los "grupos de trabajo" y todos esos iconos que justamente estan en "Mis Sitios de Red".. espero que me puedan ayudar.. desde ya muchas gracias.
|
La franja horaria es GMT +2. Ahora son las 07:37:38. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi