Von Bitmaps über Symbole und Cursor bis hin zu Stringtabellen verwendet jedes Windows-Programm Ressourcen. Ressourcen sind diejenigen Elemente eines Programms, die das Programm unterstützen, aber keinen ausführbaren Code enthalten. In diesem Artikel werden einige Beispiele für die Verwendung von Bitmaps, Symbolen und Cursorn aus Ressourcen beschrieben.
Das Platzieren von Ressourcen in der EXE-Datei besteht aus zwei Hauptelementen vorteile:
Zunächst müssen wir eine Ressourcendatei erstellen. Die Standarderweiterung für Ressourcendateien lautet .RES. Ressourcendateien können mit dem Image Editor von Delphi erstellt werden.
Sie können der Ressourcendatei einen beliebigen Namen geben, sofern sie die Erweiterung ".RES" hat und der Dateiname ohne die Erweiterung nicht mit dem Namen einer Einheit oder eines Projekts übereinstimmt. Dies ist wichtig, da jedes Delphi-Projekt, das in eine Anwendung kompiliert wird, standardmäßig eine Ressourcendatei mit demselben Namen wie die Projektdatei, jedoch mit der Erweiterung ".RES" hat. Am besten speichern Sie die Datei im selben Verzeichnis wie Ihre Projektdatei.
Um auf unsere eigene Ressourcendatei zugreifen zu können, müssen wir Delphi anweisen, unsere Ressourcendatei mit unserer Anwendung zu verknüpfen. Dies wird durch Hinzufügen einer Compiler-Direktive zum Quellcode erreicht. Diese Direktive muss unmittelbar auf die Form Direktive folgen, wie zum Beispiel:
$ R * .DFM
$ R DPABOUT.RES
Löschen Sie nicht versehentlich den Teil $ R * .DFM, da dies die Codezeile ist, die Delphi anweist, im visuellen Teil des Formulars einen Link zu erstellen. Wenn Sie Bitmaps für Geschwindigkeitsschaltflächen, Bildkomponenten oder Schaltflächenkomponenten auswählen, enthält Delphi die Bitmap-Datei, die Sie als Teil der Formularressource ausgewählt haben. Delphi isoliert Ihre Benutzeroberflächenelemente in der .DFM-Datei.
Um die Ressource tatsächlich zu verwenden, müssen Sie einige Windows-API-Aufrufe ausführen. In RES-Dateien gespeicherte Bitmaps, Cursor und Symbole können mithilfe der API-Funktionen abgerufen werden LoadBitmap, LoadCursor, und LoadIcon beziehungsweise.
Das erste Beispiel zeigt, wie Sie eine als Ressource gespeicherte Bitmap laden und in einer anzeigen TBild Komponente.
Verfahren TfrMain.btnCanvasPic (Absender: TObject);
var bBitmap: TBitmap;
Start
bBitmap: = TBitmap.Create;
Versuchen
bBitmap.Handle: = LoadBitmap (hInstance, 'ATHENA');
Image1.Width: = bBitmap.Width;
Image1.Height: = bBitmap.Height;
Image1.Canvas.Draw (0,0, bBitmap);
schließlich
bBitmap.Free;
Ende;
Ende;
Hinweis: Befindet sich die zu ladende Bitmap nicht in der Ressourcendatei, wird das Programm weiterhin ausgeführt und zeigt die Bitmap nur nicht an. Diese Situation kann vermieden werden, indem geprüft wird, ob die bBitmap.Handle ist Null nach einem Anruf an LoadBitmap () und die entsprechenden Schritte unternehmen. Der try / finally-Teil im vorherigen Code löst dieses Problem nicht. Er dient nur dazu, sicherzustellen, dass die bBitmap zerstört und der zugehörige Speicher freigegeben wird.
Eine andere Möglichkeit, eine Bitmap aus einer Ressource anzuzeigen, ist folgende:
Verfahren TfrMain.btnLoadPicClick (Absender: TObject);
Start
Image1.Picture.Bitmap.
LoadFromResourceName (hInstance, 'EARTH');
Ende;
Screen.Cursors [] ist ein Array von Cursorn, die von Delphi bereitgestellt werden. Mithilfe von Ressourcendateien können wir der Eigenschaft Cursors benutzerdefinierte Cursor hinzufügen. Sofern wir keine der Standardeinstellungen ersetzen möchten, ist die beste Strategie, Cursornummern ab 1 zu verwenden.
Verfahren TfrMain.btnUseCursorClick (Absender: TObject);
const NewCursor = 1;
Start
Screen.Cursors [NewCursor]: =
LoadCursor (hInstance, 'CURHAND');
Image1.Cursor: = NewCursor;
Ende;
Wenn wir uns Delphi's anschauen Projekt-Optionen-Anwendung Einstellungen können wir feststellen, dass Delphi das Standardsymbol für ein Projekt liefert. Dieses Symbol repräsentiert die Anwendung im Windows Explorer und wenn die Anwendung minimiert ist. Wir können dies leicht ändern, indem wir auf die Schaltfläche "Symbol laden" klicken.
Wenn wir zum Beispiel das Programmsymbol animieren möchten, wenn das Programm minimiert ist, erledigt der folgende Code die Aufgabe.
Für die Animation benötigen wir eine TTimer Komponente in einem Formular. Der Code lädt zwei Symbole aus der Ressourcendatei in ein Array von TIcon Gegenstände; Dieses Array muss im öffentlichen Teil des Hauptformulars deklariert werden. Wir werden auch brauchen NrIco, Dies ist eine Variable vom Typ Integer, die in der deklariert ist Öffentlichkeit Teil. Das NrIco wird verwendet, um das nächste anzuzeigende Symbol zu verfolgen.
Öffentlichkeit
nrIco: Integer;
MinIcon: Array [0… 1] von TIcon;
…
Verfahren TfrMain.FormCreate (Absender: TObject);
Start
MinIcon [0]: = TIcon.Create;
MinIcon [1]: = TIcon.Create;
MinIcon [0] .Handle: = LoadIcon (hInstance, 'ICOOK');
MinIcon [1] .Handle: = LoadIcon (hInstance, 'ICOFOLD');
NrIco: = 0;
Timer1.Interval: = 200;
Ende;
…
Verfahren TfrMain.Timer1Timer (Absender: TObject);
beginif IsIconic (Application.Handle) dann Start
NrIco: = (NrIco + 1) mod 2;
Application.Icon: = MinIcon [NrIco];
Ende;
Ende;
…
Verfahren TfrMain.FormDestroy (Absender: TObject);
Start
MinIcon [0] .Free;
MinIcon [1] .Free;
Ende;
In dem Timer1.OnTimer Ereignishandler, IsMinimized Mit dieser Funktion können Sie feststellen, ob Sie unser Hauptsymbol animieren müssen oder nicht. Eine bessere Möglichkeit, dies zu erreichen, besteht darin, die Schaltflächen zum Maximieren / Minimieren zu erfassen und dann zu handeln.
Wir können alles (naja, nicht alles) in Ressourcendateien ablegen. In diesem Artikel wurde beschrieben, wie Sie Ressourcen zum Verwenden / Anzeigen von Bitmaps, Cursors oder Symbolen in Ihrer Delphi-Anwendung verwenden.
Hinweis: Wenn wir ein Delphi-Projekt auf der Festplatte speichern, erstellt Delphi automatisch eine .RES-Datei mit demselben Namen wie das Projekt (wenn nichts anderes angegeben ist, befindet sich das Hauptsymbol des Projekts darin). Obwohl wir diese Ressourcendatei ändern können, ist dies nicht ratsam.