Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-08-2007
Avatar de Max_E.
Max_E. Max_E. is offline
Miembro
 
Registrado: sep 2006
Posts: 90
Poder: 18
Max_E. Va por buen camino
iconos de carpeta

hola a todos

quisiera saber si hay una manera de personalizar el icono de una carpeta atravez de una aplicacion en delphi, algo mas o menos asi


Código Delphi [-]
var
cad1,cad2: string

begin
cad1:='ubicación de carpeta;
cad2:='ubicación del icono;
cambiaricono(cad1, cad2);
end


gracias por la ayuda brindada de antemano
Responder Con Cita
  #2  
Antiguo 21-08-2007
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 20
cHackAll Va por buen camino
Creo que lo que estas buscando es algo como la personalización de una carpeta no? en tal caso deberías usar la escritura de un archivo de "texto", pues la información que lee la Shell viene de un archivo Desktop.ini con atributos HS en la carpeta personalizada, la información que éste archivo contiene es algo como ésto:

Código:
[.ShellClassInfo]
IconFile=%SystemRoot%\system32\SHELL32.dll
IconIndex=20
Responder Con Cita
  #3  
Antiguo 21-08-2007
Avatar de Max_E.
Max_E. Max_E. is offline
Miembro
 
Registrado: sep 2006
Posts: 90
Poder: 18
Max_E. Va por buen camino
???

bueno debi de empezar comentando que soy novato en esto ja ja ja
no entiendo muy bien que digamos , me quieres decir que no se puede hacer directamente al presionar un boton

Código Delphi [-]
var
....
procedure button1click.....
begin
...
end;
Responder Con Cita
  #4  
Antiguo 21-08-2007
Avatar de paldave
paldave paldave is offline
Miembro
 
Registrado: ago 2007
Ubicación: Uruguay
Posts: 148
Poder: 17
paldave Va por buen camino
Lo que quizo decir cHackAll es que tienes que tener en la carpeta a personalizar un archivo llamado "Desktop.ini" con los atributos de Oculto (H) y Archivo de Sistema (S) , el cual se comporta como un archivo de registro, y debes acceder a él a través del componente TIniFile, guardando en los valores "IconFile" e "IconIndex" los datos referidos al ícono. Vaya el ejemplo: suponiendo que la carpeta es "Archivos de Programa" y el ícono es "C:\MiIcono.ico" sería:

Código Delphi [-]
uses ..., IniFiles;

procedure TForm1.Button1Click(Sender: TObject);
var archivo:TIniFile;
begin
  archivo:=TIniFile.Create('C:\Archivos de Programa\Desktop.ini');
  archivo.WriteString('.ShellClassInfo','IconFile','C:\MiIcono.ico');
  archivo.WriteInteger('.ShellClassInfo','IconIndex',0);
  archivo.Free;
end;

El "0" de "IconIndex" se refiere al número del ícono dentro del archivo, en este caso se utiliza el primer ícono del archivo "MiIcono.ico", pero puedes referirte a un ejecutable como "mplayer.exe" y obtener el 3er ícono de ese archivo poniendo "3" en "IconIndex".
Puede que el cambio de ícono no sea visible hasta que reinicies Windows porque éste usa una caché para mantener los íconos. También podría verse el cambio forzando a refrescar la caché de íconos, pero ese ya es otro tema.
Espero te quede claro.
Responder Con Cita
  #5  
Antiguo 22-08-2007
Avatar de Max_E.
Max_E. Max_E. is offline
Miembro
 
Registrado: sep 2006
Posts: 90
Poder: 18
Max_E. Va por buen camino
hola de nuevo y gracias por la ayuda prestada chackall y paldave

hice la prueba y lo que paso es que se creo un archivo desktop.ini dentro de la carpeta con el texto
Código PHP:
 [.ShellClassInfo]
IconFile=E:\Administrador\Mis documentos\casco.ico
IconIndex
=
pero no cambió de icono, el archivo casco.ico es un icono comun y corriente , no es un archivo de iconos como creo me hacen mencion ya que no se puede elegir el icono 0 ó 1 como especifica '' IconIndex=0 ''esta por alli mi problema ??
Responder Con Cita
  #6  
Antiguo 23-08-2007
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 20
cHackAll Va por buen camino
Quise responderte con anterioridad pero el post se me borro
Lo que intentaba darte era un código parecido al siguiente:

Código Delphi [-]
procedure DefineIcon(Path, IconFile: string; IconIndex: Integer = 0);
var Desktop: Text;
begin
 Path := Path + '\Desktop.ini';
 AssignFile(Desktop, Path);
 ReWrite(Desktop);
 WriteLn(Desktop, '[.ShellClassInfo]');
 WriteLn(Desktop, 'IconFile=' + IconFile);
 WriteLn(Desktop, 'IconIndex=' + IntToStr(IconIndex));
 CloseFile(Desktop);
end;
 
procedure Form1.Button1Click(Sender: TObject);
begin
// DefineIcon('c:\Nueva carpeta', 'Icono.ico'); // El archivo Icono.ico está en la misma carpeta
// DefineIcon('c:\Nueva carpeta', '%SystemRoot%\system32\shell32.dll', 27); // El icono lo tomamos de una .DLL
 DefineIcon('c:\Nueva carpeta', 'c:\Archivos de programa\Delphi7SE\Projects\Project1.exe'); // El icono lo tomamos de nuestra aplicación
end;

Lo pruebas de las tres formas, y si hay algún errorcillo de sintaxis te pido disculpas pero no tenía un IDE cerca

Por lo que veía paldave te dio un ejemplo que hace lo mismo, y en ambos casos debería funcionar...

PD: No va por ahí el problema, IconIndex=0 es lo correcto
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
Capturar ruta de acceso a la carpeta mis documentos y a la carpeta activa. Pepe Torres API de Windows 1 23-02-2007 23:02:21
Iconos! bustio Varios 10 04-09-2005 03:40:06
Iconos .bmp CarmaZone Varios 2 11-03-2005 00:46:41
Iconos Sirkius Varios 8 11-06-2004 20:34:31
iconos aladelta Gráficos 1 09-09-2003 15:27:03


La franja horaria es GMT +2. Ahora son las 18:38:23.


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