Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-04-2008
[David] David is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Málaga
Posts: 417
Poder: 21
David Va por buen camino
Cool Obtener el icono de Windows dado una extensión

Hola

En nuestro windows, cada vez que aplicamos una extensión, nos da un icono correspondiente, y sino tiene icono por ser una extensión no reconocida, pues nos da siempre el icono ese de windows que no corresponde a ningún programa en concreto.

El caso es que dado una extensión dada, me gustaria recuperar el icono, así pues sería una función que devuelve un componente TIcon, para dibujar el icono en otra parte.

Atención, sólo tengo la extensión no el archivo, no me valdría para nada la función ExtractAssociatedIcon, pues esta devuelve un icono a partir de un archivo situado en el disco duro, pero lo que yo tengo es una DBGrid con un campo, Files, que contiene el nombre de cada archivo, eje. Rutas.doc, Planos.pdf, Balance.xls, etc...

Estoy buscando por internet y lo mejor que he visto por ahora es esto

http://www.jpgriffiths.com/tutorial/...iatedicon.html

pero no me vale, porque la función no devuelve un icon sino un string y además, no contempla sólo las extensiones sino que vuelve a la función de la Api ExtractAssociatedIcon, que realmente no me sirve.

Un saludo
Responder Con Cita
  #2  
Antiguo 28-04-2008
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
Usa la función ShGetFileInfo. En este hilo puedes ver más detalles y hay incluso un ejemplo.

// Saludos
Responder Con Cita
  #3  
Antiguo 28-04-2008
[David] David is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Málaga
Posts: 417
Poder: 21
David Va por buen camino
Veo el ejemplo para un TListView, con este código:

Código Delphi [-]
const
  shgfiIconIndex = SHGFI_SYSICONINDEX or SHGFI_USEFILEATTRIBUTES;
var
  ShFileInfo: TShFileInfo;
begin
  ShGetFileInfo(PChar(FName), 0, ShFileInfo, SizeOf(ShFileInfo), shgfiIconIndex);

El caso es que no sé aún donde poner el icono, si en TImage o en un Grid, pero si me gustaría que la función me devolviera un TIcon.

He hecho esto, pero no me ha funcionado.

Código Delphi [-]
function TForm1.ObtenerIcono(Archivo:String):hIcon;
const
  shgfiIconIndex = SHGFI_SYSICONINDEX or SHGFI_USEFILEATTRIBUTES;
var
  ShFileInfo: TShFileInfo;
begin
  ShGetFileInfo(PChar(FName), 0, ShFileInfo, SizeOf(ShFileInfo), shgfiIconIndex);
  Result := ShFileInfo.hIcon;
end;

// luego llamo a la función así
produre TForm1.btnClick();
var
 icono : hIcon;
begin
icono := ObtenerIcono('Archivo.pdf'); // o el nombre que sea
 Image1.Picture.Icon.Handle := icono; // Image1 es un TImage.
end;

Pero en el TImage, no se dibuja nada, sería interesante recuperar el icono como imagen bitmat or TIcon o de las dos maneras.

Un saludo
Responder Con Cita
  #4  
Antiguo 28-04-2008
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 lugar de

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

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

// Saludos
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Obtener version de Windows ManuelPerez Varios 4 14-04-2008 19:00:04
Obtener el icono de mi aplicacion Lizeth Varios 4 18-02-2008 21:12:05
Como obtener la MAC de un equipo remoto dado la ip?? sarroyab Redes 0 17-01-2008 06:25:42
Obtener las fuentes de Windows molina669 Varios 7 26-07-2007 16:17:11
Form en la barra de tarea de windows (2) y icono del ejecutable Moises22 API de Windows 5 07-10-2005 09:57:14


La franja horaria es GMT +2. Ahora son las 20:13:08.


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