
In der Lazarus-Version 0.9.16 (und sicher noch länger...) ist es leider nicht möglich, einer Application bzw. einem Projekt über die IDE ein Icon zuzuweisen. Ebenfalls macht es keinen Sinn, einem Formular ein Icon im Designer zuzuweisen, solange es zur Laufzeit bisher leider noch nicht korrekt angewendet wird. Bisher ist also manuelle Vorbereitung notwendig.
Das ganze beginnt mit einem Ressourcenscript als Textdatei. Es sollte den gleichen Namen wie das Projekt bekommen, nur als Dateiendung *.rc (bitte darauf achten, dass "Erweiterungen bei bekannten Dateitypen ausblenden" in den Ordneroptionen des Windows-Explorers ausgeschaltet wird, damit man nicht versehentlich Dateien mit der Endung *.rc.txt erhält); nennen wir unser Projekt mal als Beispiel MyProject.
Nach dem Erstellen einer Icon-Datei (nennen wir sie mal MainIcon.ico) kommt nun in dieses Ressourcenskript die Zeile
Code: Alles auswählen
MainIcon ICON "MainIcon.ico"
Zum Beispiel:Ressourcename ICON "Dateiname"
Code: Alles auswählen
FormIcon ICON "FormIcon.ico"
Code: Alles auswählen
windres -i MyProject.rc -o MyProject.res
Code: Alles auswählen
{$R *.res}
Dadurch, dass in der Ressourcendatei - die nun mit gelinkt wird - das Haupt-Icon den Namen MAINICON hat, sorgen einige Stellen in der Deklaration der TApplication dafür, dass dieses Icon nun als Application- und Standard-Icon registriert wird. Das sieht man dann sowohl im Explorer, als auch bei der Task-Umschaltung (Alt+Tab). Auch Formulare (außer Dialoge) erhalten damit standardmäßig dieses Icon.
Wer ein anderes Icon haben will, der muss es nun im OnCreate-Ereignis des jeweiligen Fensters zuweisen.
Code: Alles auswählen
implementation
uses Windows;
procedure TForm1.FormCreate(Sender: TObject);
var
hFormIcon: THandle;
begin
hFormIcon := LoadIcon(hInstance, 'FORMICON');
SetClassLong(self.Handle, GCL_HICON, hFormIcon);
SetClassLong(self.Handle, GCL_HICONSM, hFormIcon);
end;