Attention, quand tu écris :
Icon := Icone;
et qu'ensuite tu détruis Icone, alors la propriété Icon de ta fiche pointe dans le vide...
(idem pour Image1.Picture.Icon := Icon;)
Au lieu d'affecter directement, utilisation la méthode Assign qui réalise une copie :
procedure TForm1.ChangeIcon;
var
Icone: TIcon;
begin
Icone := TIcon.Create;
try
Icone.Handle := LoadIcon(HInstance, 'ICON3');
//Remplace l'icone de l'application dans la barre des tâches
Application.Icon.Assign(Icone);
Icone.handle := LoadIcon(HInstance, 'ICON2');
//Remplacer l'icone de la fiche
Icon.Assign(Icone);
finally
Icone.Free;
end;
end;
Comme tu l'as surement remarqué, c'est la propriété Icon de l'objet Application qu'il faut affecter et non Icon simplement qui n'agit que sur la fiche où ton code figure.
Où veux-tu en venir ?
Si c'est pour changer l'icone de manière permanente alors autant le faire à la conception (voir Projets/Options/Application) et point final.
Non justement car dans Projets/Options/Application/icone
on ne px rien mettre, c comme si la fenetre est creer en c++ avec les api : J'aimerais pouvoir remplacer l'icone en appuyant sur un des 2 boutons (icone dans ressource). C'est a dire un choix d'icone et pouvoir les loader ...
Quelle version de Delphi utilises-tu ?
De Delphi 1 à Delphi 8, c'est la même démarche : dans Projets/Options/Application il y a un bouton intitulé "Charger icone" sur lequel il suffit de cliquer.
Après vérification, il s'avère que si l'on supprime la ligne {$R *.res} dans le fichier du projet, alors effectivement, l'icone et le bouton sont inactifs (entre autres).
Tu n'aurais pas, par mégarde, supprimé cette ligne ?
NB : la prochaine fois, soit plus clair quand tu poses une question