Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > API de Windows
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-02-2007
bustio bustio is offline
Miembro
 
Registrado: oct 2003
Posts: 231
Poder: 21
bustio Va por buen camino
Como insertar dinamicamente imagenes de archivos en un TreeView?

Cita:
Empezado por delphi.com.ar
Tienes que asignarle como lista de imágenes, las imágenes del buffer del sistema

Código Delphi [-]
ilHandle := SHGetFileInfo('C:\', 0, shFileInfo, SizeOf(shFileInfo),
SHGFI_SYSICONINDEX or SHGFI_SMALLICON);

SendMessage(tvFileSystem.Handle, TVM_SETIMAGELIST, TVSIL_NORMAL, ilHandle);
SendMessage(lvFileSystem.Handle, LVM_SETIMAGELIST, LVSIL_SMALL, ilHandle);




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!
Hola! he visto tu mensaje y me parece muy bueno, pero me surgen unas dudas pues no alcanzo a entender tu codigo al 100%. Supongo que con el segmento anterior pueda obtener todos los iconos de fichero y asociarlos al TreeView, ahora, como controlo que los ficheros seleccionados tengan el icono correspondiente? Yo programe una funcion que a partir de un path me de todos los archivos y carpetas que contenga dentro recursivamente, pero ahora necesito asociarle el icono correspondiente, y es lo qu eno se como hacerlo. Las cosas que he visto por los foros no me aclaran totalmente... Intente obtener el icono del fichero, luego convertirlo a un Bitmap y annadirlo a un ImageList, pero no me funciona. Cual de las dos variantes me recomiendan? Como hacerlas?
__________________
Muchas Gracias...
Responder Con Cita
  #2  
Antiguo 28-02-2007
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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:

Código Delphi [-]
const
  shgfiIconIndex = SHGFI_SYSICONINDEX or SHGFI_USEFILEATTRIBUTES;

var
  ShFileInfo: TShFileInfo;

begin
  ShGetFileInfo('main.pas', 0, ShFileInfo, SizeOf(ShFileInfo), shgfiIconIndex);
  Node.ImageIndex := ShFileInfo.iIcon;

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
Responder Con Cita
  #3  
Antiguo 28-02-2007
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Vaya. No sé en qué estaba pensando. El ejemplo del otro hilo no tiene nada que ver. El ejemplo lo adjunto aquí.

// Saludos
Archivos Adjuntos
Tipo de Archivo: zip SysIcons.zip (9,1 KB, 227 visitas)
Responder Con Cita
  #4  
Antiguo 01-03-2007
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
En este otro ejemplo que adjunto, utilizo un TreeView que muestra los directorios, subdirectorios y archivos del folder que se especifique.

// Saludos
Archivos Adjuntos
Tipo de Archivo: zip DirTreeView.zip (3,3 KB, 276 visitas)
Responder Con Cita
  #5  
Antiguo 01-03-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Bonito ejemplo Roman
Responder Con Cita
  #6  
Antiguo 20-03-2009
jhcaboverde jhcaboverde is offline
Miembro
 
Registrado: nov 2006
Posts: 61
Poder: 18
jhcaboverde Va por buen camino
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
Responder Con Cita
  #7  
Antiguo 16-12-2010
FENIXadr FENIXadr is offline
Miembro
 
Registrado: may 2010
Ubicación: Córdoba - Cba. - Argentina
Posts: 104
Poder: 14
FENIXadr Va por buen camino
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.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 18:57:50.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi