Icons für Forms und Application

Icons für Forms und Application

Beitragvon LigH » 2. Sep 2008, 15:57 Icons für Forms und Application

Kategorie: Diverse Anleitungen
Typ: Tutorial

Artikel Name: Icons für Forms und Application
Autor: LigH
Beschreibung: Geeignete Ressourcen für Windows erstellen


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. Die Ursache liegt wohl vor allem darin, dass Icons für bestimmte Betriebssysteme sich im Aufbau von der systemunabhängigen TIcon-Klasse für FreePascal / Lazarus unterscheiden.

Bisher ist also manuelle Vorbereitung notwendig. Diese werde ich für Windows hier erklären:

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"

Der Name MainIcon am Anfang der Zeile ist ziemlich wichtig (die Groß-/Kleinschreibung nicht unbedingt), denn in den FreePascal-Quelltexten taucht der String 'MAINICON' einige Male auf. Wer mag, kann auch noch weitere Icons als zusätzliche Zeilen anfügen, immer in der Form
Ressourcename ICON "Dateiname"

Zum Beispiel:
Code: Alles auswählen
FormIcon ICON "FormIcon.ico"

Nun wird das Ressourcenscript übersetzt mit Hilfe des Programmes Lazarus-Installation\pp\bin\i386-win32\windres.exe (gut, wenn man den %PATH% passend erweitert hat):
Code: Alles auswählen
windres -i MyProject.rc -o MyProject.res

In den Quelltext des Projektes (Projekt | Quelltext anzeigen => MyProject.lpr) kommt nun gleich oben bei den anderen Compiler-Direktiven noch die folgende Zeile hinzu:
Code: Alles auswählen
{$R *.res}

Hat die *.res-Datei nicht den selben Namen wie das Projekt, dann müsste man statt des * den kompletten Namen ausschreiben.

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;
LigH
 
Beiträge: 23
Registriert: 20. Sep 2006, 08:54

• Themenende •

Zurück zu Diverse Anleitungen



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

porpoises-institution
accuracy-worried