Von Windows-Karten über Symbole und Cursor bis hin zu Zeichenfolgentabellen verwendet jedes Windows-Programm Ressourcen. Ressourcen sind die Elemente eines Programms, die das Programm unterstützen, aber kein ausführbarer Code sind. In diesem Artikel werden einige Beispiele für die Verwendung von Bitmaps, Symbolen und Cursorn aus Ressourcen beschrieben.
Standort der Ressourcen
Das Platzieren von Ressourcen in der EXE-Datei hat zwei Hauptfunktionen Vorteile:
- Auf die Ressourcen kann schneller zugegriffen werden, da das Auffinden einer Ressource in der ausführbaren Datei weniger Zeit in Anspruch nimmt als das Laden aus einer Festplattendatei.
- Die Programmdatei und die Ressourcen können in einer einzigen Einheit (der EXE-Datei) enthalten sein, ohne dass viele unterstützende Dateien erforderlich sind.
Der Bildeditor
Zunächst müssen wir eine Ressourcendatei erstellen. Die Standarderweiterung für Ressourcendateien lautet.RES. Ressourcendateien können mit dem Bildeditor von Delphi erstellt werden.
Sie können die Ressourcendatei beliebig benennen, solange sie die Erweiterung ".RES" hat und der Dateiname ohne die Erweiterung nicht mit dem Dateinamen einer Einheit oder eines Projekts identisch ist. Dies ist wichtig, da standardmäßig jeder Delphi-Projekt Diese Kompilierung in eine Anwendung hat eine Ressourcendatei mit demselben Namen wie die Projektdatei, jedoch mit der Erweiterung ".RES". Speichern Sie die Datei am besten im selben Verzeichnis wie Ihre Projektdatei.
Einbeziehen von Ressourcen in Anwendungen
Um auf unsere eigene Ressourcendatei zugreifen zu können, müssen wir Delphi anweisen, unsere Ressourcendatei mit unserer Anwendung zu verknüpfen. Dies wird erreicht, indem dem Quellcode eine Compiler-Direktive hinzugefügt wird. Diese Richtlinie muss unmittelbar der Formularrichtlinie folgen, wie folgt:
{$ R * .DFM}
{$ R DPABOUT.RES}
Löschen Sie den Teil {$ R * .DFM} nicht versehentlich, da dies die Codezeile ist, die Delphi anweist, den visuellen Teil des Formulars zu verknüpfen. Wenn Sie Bitmaps für Geschwindigkeitstasten, Bildkomponenten oder Schaltflächenkomponenten auswählen, enthält Delphi die Bitmap-Datei, die Sie als Teil der Ressource des Formulars ausgewählt haben. Delphi isoliert Ihre Benutzeroberflächenelemente in die .DFM-Datei.
Um die Ressource tatsächlich zu nutzen, müssen Sie einige erstellen Windows-API Anrufe. In RES-Dateien gespeicherte Bitmaps, Cursor und Symbole können mithilfe der API-Funktionen abgerufen werden LoadBitmap, LoadCursor, und LoadIcon beziehungsweise.
Bilder in Ressourcen
Das erste Beispiel zeigt, wie eine als Ressource gespeicherte Bitmap geladen und in einer angezeigt wird TImage Komponente.
Verfahren TfrMain.btnCanvasPic (Absender: TObject);
var bBitmap: TBitmap;
Start
bBitmap: = TBitmap. Erstellen;
Versuchen
bBitmap. Handle: = LoadBitmap (hInstance, 'ATHENA');
Image1.Width: = bBitmap. Breite;
Image1.Height: = bBitmap. Höhe;
Image1.Canvas. Draw (0,0, bBitmap);
schließlich
bBitmap. Kostenlos;
Ende;
Ende;
Hinweis: Wenn sich die zu ladende Bitmap nicht in der Ressourcendatei befindet, wird das Programm weiterhin ausgeführt und die Bitmap wird nur nicht angezeigt. Diese Situation kann vermieden werden, indem getestet wird, ob die bBitmap. Griff ist nach einem Anruf bei Null LoadBitmap () und die entsprechenden Schritte unternehmen. Das versuche es / endlich Ein Teil des vorherigen Codes 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;
Cursor in Ressourcen
Bildschirm. Cursor [] ist ein Array von Cursorn von Delphi geliefert. Mithilfe von Ressourcendateien können wir der Cursors-Eigenschaft benutzerdefinierte Cursor hinzufügen. Sofern wir keine der Standardeinstellungen ersetzen möchten, besteht die beste Strategie darin, Cursornummern ab 1 zu verwenden.
Verfahren TfrMain.btnUseCursorClick (Absender: TObject);
const NewCursor = 1;
Start
Bildschirm. Cursor [NewCursor]: =
LoadCursor (hInstance, 'CURHAND');
Image1.Cursor: = NewCursor;
Ende;
Symbole in Ressourcen
Wenn wir uns Delphi's ansehen Projekt-Options-Anwendung Einstellungen können wir feststellen, dass Delphi das Standardsymbol für ein Projekt bereitstellt. 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 beispielsweise 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 auf einem Formular. Der Code lädt zwei Symbole aus der Ressourcendatei in ein Array von TIcon Objekte; Dieses Array muss im öffentlichen Teil des Hauptformulars deklariert werden. Wir werden auch brauchen NrIco, das ist ein Integer-Typ Variable, erklärt in der Ö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. Erstellen;
MinIcon [1]: = TIcon. Erstellen;
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 (Anwendung. Griff) dannStart
NrIco: = (NrIco + 1) mod 2;
Anwendung. Symbol: = MinIcon [NrIco];
Ende;
Ende;
...
Verfahren TfrMain. FormDestroy (Absender: TObject);
Start
MinIcon [0] .Free;
MinIcon [1] .Free;
Ende;
In dem Timer1.OnTimer Event-Handler, IsMinimized Mit dieser Funktion können Sie feststellen, ob wir unser Hauptsymbol animieren müssen oder nicht. Ein besserer Weg, dies zu erreichen, wäre, die Maximierungs- / Minimierungsschaltflächen zu erfassen und dann zu handeln.
Letzte Worte
Wir können alles (naja, nicht alles) in Ressourcendateien platzieren. Dieser Artikel hat Ihnen gezeigt, wie Sie Ressourcen verwenden, um Bitmap, Cursor oder ein Symbol in Ihrer Delphi-Anwendung zu verwenden / anzuzeigen.
Hinweis: Wenn wir ein Delphi-Projekt auf der Festplatte speichern, erstellt Delphi automatisch eine .RES-Datei mit demselben Namen wie das Projekt (nicht zuletzt befindet sich das Hauptsymbol des Projekts darin). Obwohl wir diese Ressourcendatei ändern können, ist dies nicht ratsam.