Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Como salvar desde un programa en delphi con tu propio icono. (https://www.clubdelphi.com/foros/showthread.php?t=30627)

Dragon 11-04-2006 22:57:31

Como salvar desde un programa en delphi con tu propio icono.
 
La cuestion es que quiero que mi programa hecho en Delphi7 salve unos ficheros pero estos tienen que tener el icono que yo decida.

Como es posible hacer esto??. desde ya les estoy dando las gracias. Soy todo oidos.
saludos.

German 12-04-2006 04:40:56

Supongo que te refieres a que una determinada extensión de archivo aparezca en el explorador de Windows con un determinado icono, y que se abra con un determinado programa. Esto puede conseguirse a través de los registros del sistema, pero tendrás que hacerlo en cualquier ordenador que utilice el ejecutable hecho en delphi, e incluir el icono que utilizara en el directorio de tu programa. Para ello, bastaría que comprobaras en el evento "OnCreate" del form principal si estos registros ya están creados, y si no, crearlos.

Por ejemplo, si la extensión fuera ".jur":
Código Delphi [-]
Uses (...) ShlObj, Registry;

(...)

procedure TForm1.FormCreate(Sender: TObject);
var Registro: tRegistry;
begin
  Registro := tRegistry.Create;
  with Registro do
  begin
    RootKey := HKEY_CLASSES_ROOT;
    if not OpenKey('.jur',False) then
    begin
      CreateKey('.jur');
      OpenKey('.jur',False);
      WriteString('','jur');
      CloseKey;
      CreateKey('jur');
      OpenKey('jur',False);
      // Descripción del tipo de archivo personal:
      WriteString('','Archivo personal de mi programa');
      CloseKey;
      CreateKey('jur\DefaultIcon');
      OpenKey('jur\DefaultIcon',False);
      // Ruta hasta el icono que utilizara el tipo de archivo personal:
      WriteString('','C:\MiPrograma\MiIcono.ico,0');
      CloseKey;
      CreateKey('jur\Shell\Open');
      OpenKey('jur\Shell\Open',False);
      // Descripción que aparece en el menu contextual del explorador:
      WriteString('', '&Abrir archivo personal'); 
      CloseKey;
      CreateKey('jur\Shell\Open\Command');
      OpenKey('jur\Shell\Open\Command',False);
      // Ruta hasta el EXE que abrirá el tipo de archivo personal:
      WriteString('', '"C:\MiPrograma\MiEjecutable.exe" "%1"');
      CloseKey;
      // Esto actualiza la "vista" del explorador:
      SHChangeNotify( SHCNE_ASSOCCHANGED,SHCNF_IDLIST,nil, nil);
    end;
    CloseKey;
    Free;
  end;
end;


Nota: La creación de los registros también la podria hacer el programa de instalación de tu aplicación.

Salu2.

Carloslpl 13-04-2006 23:07:40

Hola German, gracias por tu ayuda la verdad que resolvi con tu respuesta, ahora si pudieras decirme como se hace para que cuando desintale mi programa este elemine el icono a los ficheros que queden en la computadora con la extencion de mi programa, disculpa mi falta de conocimiento en este tema pero es la primera ves que trabajo con cosas del registro de windows.
Salu2s.

German 14-04-2006 00:13:50

Si las claves de registro las crea el instalador (por ej. InstallShield), él mismo se encargará de eliminarlas al desinstalar el programa. Si las crea el ejecutable, con esto bastaría para borrarlas:

Código Delphi [-]
Registro := tRegistry.Create;
with Registro do
begin
  RootKey := HKEY_CLASSES_ROOT;
  DeleteKey('.jur');
  DeleteKey('jur');
  Free;
end;

Salu2.


La franja horaria es GMT +2. Ahora son las 02:03:11.

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