PDA

Ver la Versión Completa : Como salvar desde un programa en delphi con tu propio icono.


Dragon
11-04-2006, 22:57:31
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":
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:

Registro := tRegistry.Create;
with Registro do
begin
RootKey := HKEY_CLASSES_ROOT;
DeleteKey('.jur');
DeleteKey('jur');
Free;
end;

Salu2.