En Sat, 18 Jun 2016 20:10:56 -0500, Maximiliano Duarte
<maximiliano.duarte en gmail.com> wrote 48 lines
Lo que quiere es cambiar el icono en tiempo de ejecución.
No creo se pueda. Me parece que es parte de la aplicación y no puede ser
modificado-----
De: francisco prieto
Enviado el: 18/06/2016 11:58
Para: Spanish version of Lazarus List
Asunto: Re: [Lazarus-es] Cambiar icono antes de compilar apliación
Antonio,
Se me ocurre que para lo tuyo podes intentar algo asi...
http://www.clubdelphi.com/foros/showthread.php?t=47395
Ojo, el Lazarus tiene un bug y para que te tome correctamente el archivo
de recursos tenes que:
1-Ejecutar
2-Limpiar y Construir
3- Dejar tildada solo las opciones Directorio de Salida de Proyecto y
Directorio de Fuentes del >Proyecto
4- Limpiar y Construir
Cada vez que hagas un cambio en los puntos res, tendras que Limpiar y
Construir porque sino te va a >tomar el archivo res anterior.
Pero salvo por eso el archivo de recursos se puede usar sin problemas.
Saludos,
Pancho
Cordoba
Argentina
El sáb., 18 jun. 2016 a las 10:51, Antonio Évora Ramírez
(<aevorar en gmail.com>) escribió:
>
> Buenas Maikel.
>
> Como tu comentas es como se hace. Pero lo que yo necesito es que si el
> modo de compilación es A >>ponga un icono y si el modo de compilación
> es B ponga otro icono distinto. Ya lo tengo orquestado >>para el fondo
> de la aplicación que cambia en función del modo de compilación pero con
> el icono no >>hay manera (o al menos yo no se como). La solución sería
> que al compilar usará el icono de la >>aplicación y no el que se cargó
> al cargar el proyecto.
>
> Espero haberme explicado mejor ;-)
>
>
Interesante. Como Antonio ha descubierto los modos de compilación no incluyen el apartado de "Recursos" por lo que actualmente esto no es posible. Me dí a la tarea de investigarlo y he dado con un método que al parecer funciona, intenta los siguientes pasos:
1. Eliminar el icono de la aplicación. Mediante el Menú Proyecto->Opciones del proyecto en el apartado "Aplicación" presiona el botón "Quitar Icono", Presiona el botón "Aceptar" para guardar los cambios.
2. Preparar Archivo de proyecto para el nuevo recurso. Mediante el Menú Proyecto->Ver Fuente Proyecto editar el código del archivo .lpr, donde tenemos
{$R *.res}
Editarlo para que quede así (el nombre AppIcon.res es gusto personal):
{$R AppIcon.res}
{$R *.res}
Guardar los cambios.
3. Modificar los modos de construcción.
(a) Mediante el Menú Proyecto->Opciones del proyecto seleccionar el apartado: "Comandos del compilador", en el panel derecho. (b) Selecciona el modo de compilación de la lista en la parte superior del panel derecho.
(c) En apartado "Ejecutar antes de" hacer lo siguiente:
* Desmarcar "Ejecutar", Marcar "Compilar" y "Construir"
* En "Comando" escribir: x:\ruta\a\windres.exe -i
x:\ruta\a\AppIconModoA.rc -o AppIcon.res
(d) Repetir desde (b) para cada modo de compilación existente. (e) Presiona el botón "Aceptar" para guardar los cambios.
y con esto cada vez que compiles, el ejecutable deberá tener el icono que hayas seleccionado, que icono se usa para cada modo de compilación será determinado por los archivos AppIconModoX.rc que deberás crear para cada modo. windres.exe lo encuentras en el directorio "bin" de tu instalación de FPC, entonces ajusta la ruta de manera que Lazarus lo encuentre.
En mi caso, he creado un directorio "res" dentro del directorio del proyecto donde pongo los archivos .ico y .rc, entonces suponiendo que he instalado fpc en c:\Users\Jesus\dev\fpc\3.0.0 la línea de comando sería:
c:\Users\Jesus\dev\fpc\3.0.0\bin\windres.exe -i res\AppIconModoA.rc -o AppIcon.res
AppIcon.res debe coincidir con lo especificado en el paso 2. entonces, solo resta la construcción de cada archivo .rc, es sumamente fácil, el contenido es una sola línea de texto, algo así como:
AppIcon ICON "ModoA.ico"
La primer palabra: AppIcon es lo que recomienda FPC (http://www.freepascal.org/docs-html/prog/progse63.html#x275-29000013.5), pero podría ser un número (ver
https://msdn.microsoft.com/library/windows/desktop/aa381018), por ejemplo:
0 ICON "ModoA.ico"
La segunda palabra: ICON es requerida para un recurso del tipo icono.
y por último, viene el nombre del archivo que contiene el icono, si colocas los archivos .ico, junto a los archivos .rc, no deberían haber problemas. No he intentado con otras rutas.
Al parecer el icono de la aplicación será el primero recurso ICON que se encuentre (esto último es mas bien una corazonada, no he investigado) pero por eso he puesto primero {$R AppIcon.res} que {$R *.res}, esperando que sirva en el caso de que la aplicación haga uso de mas iconos.
Aunque esto funciona, en mi caso y como anécdota personal, me ha costado un pequeño dolor de cabeza porque a pesar de que acá todo se hacía correctamente, la aplicación seguía siendo generada con el icono predeterminado. Y es que no se si tenga algo que ver la instalación de Turtoise svn y git que se meten con la apariencia de los iconos para mostrar el estado de cada archivo y guardarán un cache o que se yo (lo más fácil es echarle la culpa a Windows 10, por que no :)), pero después usando un editor de recursos me di cuenta de que el icono esta siendo incorporado correctamente cada vez, o sí, en efecto algo pasé por alto....
Claro que no es la única solución, seguramente se podrá encontrar en Internet alguna aplicación que cambie el icono del ejecutable una vez que se haya generado, para eso se tendría que usar el apartado: "Ejecutar después de" marcando también "Compilar" y "Construir". Esta alternativa no la he probado, pero debería funcionar :)
Bueno, espero que funcione bien para ti, si lo deseas prueba y comenta...
Saludos.
Jesus Reyes A.