Difference between revisions of "Ressourcefile/de"

From Free Pascal wiki
Jump to navigationJump to search
m
(bypass redirect [cf. move])
 
(One intermediate revision by one other user not shown)
Line 1: Line 1:
{{Ressourcefile}}
+
{{Resourcefile}}
<br>
+
 
Zurück zu den [[Additional information/de|Zusätzlichen Informationen]].<br>
+
 
<br>
+
Zurück zu den [[Additional information/de|Zusätzlichen Informationen]].
 +
 
 +
 
 
__TOC__
 
__TOC__
<br>
+
 
Dieser Artikel bezieht sich auf Lazarus Version 1.0.6 und höher.<br>
+
 
Dieser Artikel beschäftigt sich mit den Grundlagen von Ressourcen-Dateien.<br>
+
Dieser Artikel bezieht sich auf Lazarus Version 1.0.6 und höher.
<br>
+
 
<br>
+
Dieser Artikel beschäftigt sich mit den Grundlagen von Ressourcen-Dateien.
 +
 
 +
 
 
=Einleitung=
 
=Einleitung=
Dieser Artikel beschreibt die Erstellung und Verwendung von Ressourcendateien speziell für die Programmierung unter Windows.<br>
+
 
Als Beispiel dient das Einfügen von mehreren Ressourcen in das eigene Windowsprogramm.<br>
+
Dieser Artikel beschreibt die Erstellung und Verwendung von Ressourcendateien speziell für die Programmierung unter Windows.
<br>
+
 
<br>
+
Als Beispiel dient das Einfügen von mehreren Ressourcen in das eigene Windowsprogramm.
 +
 
 
==Möglichkeiten eine Ressourcendatei einzubinden==
 
==Möglichkeiten eine Ressourcendatei einzubinden==
Eine Ressourcendatei kann auf zwei Wegen in das eigene Programm eingebunden werden:<br>
+
 
 +
Eine Ressourcendatei kann auf zwei Wegen in das eigene Programm eingebunden werden:
 +
 
 
* als Textdatei (*.rc)
 
* als Textdatei (*.rc)
 
* vorcompiliert als Binärdatei (*.res)
 
* vorcompiliert als Binärdatei (*.res)
<br>
 
<br>
 
  
 
==Kommentare in einer Ressourcendatei==
 
==Kommentare in einer Ressourcendatei==
In Recourcendateien sind Kommentare grundsätzlich möglich und auch erlaubt.<br>
+
 
Es gibt zwei Arten von Kommentaren Einzelkommentare und Blockkommentare.<br>
+
In Recourcendateien sind Kommentare grundsätzlich möglich und auch erlaubt.
Einzelkommentarzeichen // kennzeichnen nur eine einzelne Zeile oder das Ende einer Zeile als Kommentar.<br>
+
 
Blockkommentarzeichen /* */ kennzeichnen eine einzelne oder mehrere Zeilen als Kommentar.<br>
+
Es gibt zwei Arten von Kommentaren Einzelkommentare und Blockkommentare.
<br>
+
 
Beispiel für einen Einzelkommentar:<br>
+
Einzelkommentarzeichen // kennzeichnen nur eine einzelne Zeile oder das Ende einer Zeile als Kommentar.
 +
 
 +
Blockkommentarzeichen /* */ kennzeichnen eine einzelne oder mehrere Zeilen als Kommentar.
 +
 
 +
Beispiel für einen Einzelkommentar:
 +
 
 
  NeuesIcon  ICON Neu.ico  // ein zusätzliches Icon für das Programm.
 
  NeuesIcon  ICON Neu.ico  // ein zusätzliches Icon für das Programm.
<br>
+
 
Beispiel für einen Blockkommentar:<br>
+
Beispiel für einen Blockkommentar:
 +
 
 
  /*  
 
  /*  
 
   In dieser Datei (test.rc) sind alle
 
   In dieser Datei (test.rc) sind alle
Line 36: Line 47:
 
   enthalten.
 
   enthalten.
 
  */
 
  */
<br>
+
 
<br>
 
  
 
=Schritt 1: Erstellen der Ressourcendatei als Textdatei=
 
=Schritt 1: Erstellen der Ressourcendatei als Textdatei=
Zuerst müssen Sie sich die einzubindenden Ressourcen (Icons, Bitmaps, usw.) erstellen oder beschaffen.<br>
+
 
Dann erstellen Sie mit einem Texteditor (z. B. Notepad) eine Datei mit der Endung <b>.rc</b>. Eine Ressourcendatei muss immer die Dateiendung <b>.rc</b> haben.<br>
+
Zuerst müssen Sie sich die einzubindenden Ressourcen (Icons, Bitmaps, usw.) erstellen oder beschaffen.
In diese Ressourcendatei tragen Sie die einzelnen Recourcen (Icon, Bitmap, JPEG) nach folgendem Schema ein:<br>
+
 
[Der Name unter dem die Recource (Icon, Bitmap, JPEG, usw.) in Ihrem Programm verwendet werden soll] [Ressourcentyp] [Name der einzubindenden Datei]<br>
+
Dann erstellen Sie mit einem Texteditor (z. B. Notepad) eine Datei mit der Endung '''.rc'''. Eine Ressourcendatei muss immer die Dateiendung '''.rc''' haben.
Beispiel für den Aufbau der Ressourcendatei:<br>
+
 
 +
In diese Ressourcendatei tragen Sie die einzelnen Recourcen (Icon, Bitmap, JPEG) nach folgendem Schema ein:
 +
 
 +
[Der Name unter dem die Recource (Icon, Bitmap, JPEG, usw.) in Ihrem Programm verwendet werden soll] [Ressourcentyp] [Name der einzubindenden Datei]
 +
 
 +
Beispiel für den Aufbau der Ressourcendatei:
 +
 
 
  /* ICONS */
 
  /* ICONS */
 
  MAINICON ICON "Bubble.ico"
 
  MAINICON ICON "Bubble.ico"
Line 60: Line 76:
 
  /* Klaenge */
 
  /* Klaenge */
 
  TON WAVE "Ton.wav"
 
  TON WAVE "Ton.wav"
<br>
+
 
Vergessen Sie das Speichern der Ressourcendatei nicht.<br>
+
Vergessen Sie das Speichern der Ressourcendatei nicht.
In diesem Beispiel heisst die Ressourcendatei test.rc.<br>
+
 
<br>
+
In diesem Beispiel heisst die Ressourcendatei test.rc.
<br>
 
  
 
=Schritt 2: Einbinden der Ressourcendatei in das eigene Programm=
 
=Schritt 2: Einbinden der Ressourcendatei in das eigene Programm=
 +
 
==Möglichkeit 1: Verwenden der Ressourcendatei als Textdatei==
 
==Möglichkeit 1: Verwenden der Ressourcendatei als Textdatei==
<br>
+
 
 
===Einbinden der Ressourcendatei als Textdatei===
 
===Einbinden der Ressourcendatei als Textdatei===
Die Ressourcendatei (test.rc) wird mit der Compilerdirektive $R in das Programm eingebunden.<br>
+
 
<syntaxhighlight>
+
Die Ressourcendatei (test.rc) wird mit der Compilerdirektive $R in das Programm eingebunden.
 +
 
 +
<syntaxhighlight lang=pascal>
 
unit ...;
 
unit ...;
 
{$mode objfpc}{$H+}
 
{$mode objfpc}{$H+}
Line 78: Line 96:
 
interface
 
interface
 
</syntaxhighlight>
 
</syntaxhighlight>
<br>
 
<br>
 
  
 
==Möglichkeit 2: Verwenden der Ressourcendatei als Binärdatei==
 
==Möglichkeit 2: Verwenden der Ressourcendatei als Binärdatei==
<br>
+
 
Dies ist nur unter Windows 32 Bit möglich, da nur dort der Ressourcen-Compiler windres.exe zum Lieferumfang gehört.<br>
+
Dies ist nur unter Windows 32 Bit möglich, da nur dort der Ressourcen-Compiler windres.exe zum Lieferumfang gehört.
<br>
+
 
 
===Compilieren der Ressourcendatei zur Binärdatei===
 
===Compilieren der Ressourcendatei zur Binärdatei===
<br>
+
 
Das Programm windres.exe gehört zum Lieferumfang von FreePascal.<br>
+
Das Programm windres.exe gehört zum Lieferumfang von FreePascal.
Das Programm windres.exe ist ein Konsolenprogramm. Das heisst, das Programm windres hat keine grafische Oberfläche und wird an der Konsole bedient.<br>
+
 
Das Programm windres.exe findet sich im Binärverzeichnis von Freepascal.<br>
+
Das Programm windres.exe ist ein Konsolenprogramm. Das heisst, das Programm windres hat keine grafische Oberfläche und wird an der Konsole bedient.
Das Programm windres.exe findet sich evtl. unter folgendem Pfad %ProgramFiles%\lazarus\fpc\2.6.0\bin\i386-win32.<br>
+
 
<br>
+
Das Programm windres.exe findet sich im Binärverzeichnis von Free Pascal.
Syntax:<br>
+
 
 +
Das Programm windres.exe findet sich evtl. unter folgendem Pfad %ProgramFiles%\lazarus\fpc\2.6.0\bin\i386-win32.
 +
 
 +
Syntax:
 
  windres -i [Eingabedatei] -o [Ausgabedatei]
 
  windres -i [Eingabedatei] -o [Ausgabedatei]
Beispiel:<br>
+
 
 +
Beispiel:
 
  windres -i test.rc -o test.res
 
  windres -i test.rc -o test.res
<br>
+
 
<br>
+
 
 
===Einbinden der Ressourcendatei als Binärdatei===
 
===Einbinden der Ressourcendatei als Binärdatei===
Die compilierte Ressourcendatei (test.res) wird mit der Compilerdirektive $R in das Programm eingebunden.<br>
+
 
<syntaxhighlight>
+
Die compilierte Ressourcendatei (test.res) wird mit der Compilerdirektive $R in das Programm eingebunden.
 +
 
 +
<syntaxhighlight lang=pascal>
 
unit ...;
 
unit ...;
 
{$mode objfpc}{$H+}
 
{$mode objfpc}{$H+}
Line 107: Line 129:
 
interface
 
interface
 
</syntaxhighlight>
 
</syntaxhighlight>
<br>
 
<br>
 
  
 
=Verwenden der Ressource im eigenen Programmcode=
 
=Verwenden der Ressource im eigenen Programmcode=
<br>
+
 
 
==Verwenden eines Icons==
 
==Verwenden eines Icons==
<br>
+
 
Im Beispiel wird das Icon haus.ico über seinen Alias ZWEITES dem Formular als Icon zugewiesen.<br>
+
Im Beispiel wird das Icon haus.ico über seinen Alias ZWEITES dem Formular als Icon zugewiesen.
<syntaxhighlight>
+
 
 +
<syntaxhighlight lang=pascal>
 
Form1.Icon.LoadFromResourceName(hInstance,'ZWEITES');
 
Form1.Icon.LoadFromResourceName(hInstance,'ZWEITES');
 
</syntaxhighlight>
 
</syntaxhighlight>
Mit dieser Vorgehensweise kann das Programm während der Programmlaufzeit beliebig oft ein anderes Icon anzeigen.<br>
+
 
<br>
+
Mit dieser Vorgehensweise kann das Programm während der Programmlaufzeit beliebig oft ein anderes Icon anzeigen.
 +
 
 
==Verwenden einer Bitmap==
 
==Verwenden einer Bitmap==
<br>
+
 
Im Beispiel wird die Bitmap Hintergrund.bmp über ihren Alias HINTERGRUNDBMP einem TImage als Bild zugewiesen.<br>
+
Im Beispiel wird die Bitmap Hintergrund.bmp über ihren Alias HINTERGRUNDBMP einem TImage als Bild zugewiesen.
<syntaxhighlight>
+
 
 +
<syntaxhighlight lang=pascal>
 
   ...
 
   ...
  
Line 150: Line 173:
 
end;
 
end;
 
</syntaxhighlight>
 
</syntaxhighlight>
Mit dieser Vorgehensweise kann das Programm während der Programmlaufzeit beliebig oft ein anderes Bild anzeigen.<br>
+
 
<br>
+
Mit dieser Vorgehensweise kann das Programm während der Programmlaufzeit beliebig oft ein anderes Bild anzeigen.
 +
 
 
==Verwenden einer JPG-Datei (selbstdefinierte Resource)==
 
==Verwenden einer JPG-Datei (selbstdefinierte Resource)==
<br>
+
 
Für die Konstante RT_RCDATA wird die Unit <b>Windows</b> benötigt.<br>
+
Für die Konstante RT_RCDATA wird die Unit <b>Windows</b> benötigt.
<br>
+
 
Im Beispiel wird die Datei Hintergrund.jpg über ihren Alias HINTERGRUNDJPG einem TJPEGImage als Bild zugewiesen.<br>
+
Im Beispiel wird die Datei Hintergrund.jpg über ihren Alias HINTERGRUNDJPG einem TJPEGImage als Bild zugewiesen.
<syntaxhighlight>
+
 
 +
<syntaxhighlight lang=pascal>
 
   ...
 
   ...
 
uses
 
uses
Line 194: Line 219:
 
end;
 
end;
 
</syntaxhighlight>
 
</syntaxhighlight>
Mit dieser Vorgehensweise kann das Programm während der Programmlaufzeit beliebig oft ein anderes Bild anzeigen.<br>
+
 
<br>
+
Mit dieser Vorgehensweise kann das Programm während der Programmlaufzeit beliebig oft ein anderes Bild anzeigen.
 +
 
 
==Verwenden einer Gif-Datei (selbstdefinierte Resource)==
 
==Verwenden einer Gif-Datei (selbstdefinierte Resource)==
<br>
+
 
Für die Konstante RT_RCDATA wird die Unit <b>Windows</b> benötigt.<br>
+
Für die Konstante RT_RCDATA wird die Unit <b>Windows</b> benötigt.
<br>
+
 
Im Beispiel wird die Datei Hintergrund.jpg über ihren Alias HINTERGRUNDJPG einem TJPEGImage als Bild zugewiesen.<br>
+
Im Beispiel wird die Datei Hintergrund.jpg über ihren Alias HINTERGRUNDJPG einem TJPEGImage als Bild zugewiesen.
<syntaxhighlight>
+
 
 +
<syntaxhighlight lang=pascal>
 
   ...
 
   ...
 
uses
 
uses
Line 238: Line 265:
 
end;
 
end;
 
</syntaxhighlight>
 
</syntaxhighlight>
Mit dieser Vorgehensweise kann das Programm während der Programmlaufzeit beliebig oft ein anderes Bild anzeigen.<br>
+
 
<br>
+
Mit dieser Vorgehensweise kann das Programm während der Programmlaufzeit beliebig oft ein anderes Bild anzeigen.
<br>
+
 
 
==Verwenden einer PNG-Datei (selbstdefinierte Resource)==
 
==Verwenden einer PNG-Datei (selbstdefinierte Resource)==
<br>
+
 
Für die Konstante RT_RCDATA wird die Unit <b>Windows</b> benötigt.<br>
+
Für die Konstante RT_RCDATA wird die Unit '''Windows''' benötigt.
<br>
+
 
Im Beispiel wird die Datei Hintergrund.jpg über ihren Alias HINTERGRUNDJPG einem TJPEGImage als Bild zugewiesen.<br>
+
Im Beispiel wird die Datei Hintergrund.jpg über ihren Alias HINTERGRUNDJPG einem TJPEGImage als Bild zugewiesen.
<syntaxhighlight>
+
 
 +
<syntaxhighlight lang=pascal>
 
   ...
 
   ...
 
uses
 
uses
Line 283: Line 311:
 
end;
 
end;
 
</syntaxhighlight>
 
</syntaxhighlight>
Mit dieser Vorgehensweise kann das Programm während der Programmlaufzeit beliebig oft ein anderes Bild anzeigen.<br>
+
 
<br>
+
Mit dieser Vorgehensweise kann das Programm während der Programmlaufzeit beliebig oft ein anderes Bild anzeigen.
<br>
 
  
 
==Verwenden eines Mauszeigers==
 
==Verwenden eines Mauszeigers==
<br>
+
 
<syntaxhighlight>
+
<syntaxhighlight lang=pascal>
 
   ...
 
   ...
 
var
 
var
Line 317: Line 344:
 
end;
 
end;
 
</syntaxhighlight>
 
</syntaxhighlight>
Mit dieser Vorgehensweise kann das Programm während der Programmlaufzeit beliebig oft einen anderen Mauszeiger anzeigen.<br>
+
 
 +
Mit dieser Vorgehensweise kann das Programm während der Programmlaufzeit beliebig oft einen anderen Mauszeiger anzeigen.
 +
 
 
==Verwenden einer Wave-Datei==
 
==Verwenden einer Wave-Datei==
<br>
+
 
<syntaxhighlight>
+
<syntaxhighlight lang=pascal>
  
 
...
 
...
Line 370: Line 399:
 
end;
 
end;
 
</syntaxhighlight>
 
</syntaxhighlight>
Mit dieser Vorgehensweise kann das Programm während der Programmlaufzeit beliebig oft eine andere WAV-Ressource ausführen.<br>
+
 
<br>
+
Mit dieser Vorgehensweise kann das Programm während der Programmlaufzeit beliebig oft eine andere WAV-Ressource ausführen.
<br>
 
--[[User:Olaf|Olaf]] 09:38, 16 February 2013 (UTC)
 
[[Category:Tutorials/de]]{{AutoCategory}}
 

Latest revision as of 20:09, 6 August 2022

Windows logo - 2012.svg

Dieser Artikel behandelt ausschließlich Windows.

Siehe auch: Multiplatform Programming Guide/de

Deutsch (de)


Zurück zu den Zusätzlichen Informationen.



Dieser Artikel bezieht sich auf Lazarus Version 1.0.6 und höher.

Dieser Artikel beschäftigt sich mit den Grundlagen von Ressourcen-Dateien.


Einleitung

Dieser Artikel beschreibt die Erstellung und Verwendung von Ressourcendateien speziell für die Programmierung unter Windows.

Als Beispiel dient das Einfügen von mehreren Ressourcen in das eigene Windowsprogramm.

Möglichkeiten eine Ressourcendatei einzubinden

Eine Ressourcendatei kann auf zwei Wegen in das eigene Programm eingebunden werden:

  • als Textdatei (*.rc)
  • vorcompiliert als Binärdatei (*.res)

Kommentare in einer Ressourcendatei

In Recourcendateien sind Kommentare grundsätzlich möglich und auch erlaubt.

Es gibt zwei Arten von Kommentaren Einzelkommentare und Blockkommentare.

Einzelkommentarzeichen // kennzeichnen nur eine einzelne Zeile oder das Ende einer Zeile als Kommentar.

Blockkommentarzeichen /* */ kennzeichnen eine einzelne oder mehrere Zeilen als Kommentar.

Beispiel für einen Einzelkommentar:

NeuesIcon  ICON Neu.ico  // ein zusätzliches Icon für das Programm.

Beispiel für einen Blockkommentar:

/* 
 In dieser Datei (test.rc) sind alle
 Recourcen für das Programm
 enthalten.
*/


Schritt 1: Erstellen der Ressourcendatei als Textdatei

Zuerst müssen Sie sich die einzubindenden Ressourcen (Icons, Bitmaps, usw.) erstellen oder beschaffen.

Dann erstellen Sie mit einem Texteditor (z. B. Notepad) eine Datei mit der Endung .rc. Eine Ressourcendatei muss immer die Dateiendung .rc haben.

In diese Ressourcendatei tragen Sie die einzelnen Recourcen (Icon, Bitmap, JPEG) nach folgendem Schema ein:

[Der Name unter dem die Recource (Icon, Bitmap, JPEG, usw.) in Ihrem Programm verwendet werden soll] [Ressourcentyp] [Name der einzubindenden Datei]

Beispiel für den Aufbau der Ressourcendatei:

/* ICONS */
MAINICON ICON "Bubble.ico"
ZWEITES ICON "Buy.ico"
DRITTES ICON "Calendar.ico"
VIERTES ICON "Clipboard.ico"
/* Grafiken */
HINTERGRUNDBMP BITMAP "Hintergrund.bmp"
HINTERGRUNDJPG RCDATA "Hintergrund.jpg"
HINTERGRUNDGIF RCDATA "Hintergrund.gif"
HINTERGRUNDPNG RCDATA "Hintergrund.png"
/* Cursors */
FarbCursorNormal CURSOR FarbCursorNormal.cur
FarbCursorAlternativ CURSOR FarbCursorAlternativ.cur
/* Klaenge */
TON WAVE "Ton.wav"

Vergessen Sie das Speichern der Ressourcendatei nicht.

In diesem Beispiel heisst die Ressourcendatei test.rc.

Schritt 2: Einbinden der Ressourcendatei in das eigene Programm

Möglichkeit 1: Verwenden der Ressourcendatei als Textdatei

Einbinden der Ressourcendatei als Textdatei

Die Ressourcendatei (test.rc) wird mit der Compilerdirektive $R in das Programm eingebunden.

unit ...;
{$mode objfpc}{$H+}
{$R test.rc}
...
interface

Möglichkeit 2: Verwenden der Ressourcendatei als Binärdatei

Dies ist nur unter Windows 32 Bit möglich, da nur dort der Ressourcen-Compiler windres.exe zum Lieferumfang gehört.

Compilieren der Ressourcendatei zur Binärdatei

Das Programm windres.exe gehört zum Lieferumfang von FreePascal.

Das Programm windres.exe ist ein Konsolenprogramm. Das heisst, das Programm windres hat keine grafische Oberfläche und wird an der Konsole bedient.

Das Programm windres.exe findet sich im Binärverzeichnis von Free Pascal.

Das Programm windres.exe findet sich evtl. unter folgendem Pfad %ProgramFiles%\lazarus\fpc\2.6.0\bin\i386-win32.

Syntax:

windres -i [Eingabedatei] -o [Ausgabedatei]

Beispiel:

windres -i test.rc -o test.res


Einbinden der Ressourcendatei als Binärdatei

Die compilierte Ressourcendatei (test.res) wird mit der Compilerdirektive $R in das Programm eingebunden.

unit ...;
{$mode objfpc}{$H+}
{$R test.res}
...
interface

Verwenden der Ressource im eigenen Programmcode

Verwenden eines Icons

Im Beispiel wird das Icon haus.ico über seinen Alias ZWEITES dem Formular als Icon zugewiesen.

Form1.Icon.LoadFromResourceName(hInstance,'ZWEITES');

Mit dieser Vorgehensweise kann das Programm während der Programmlaufzeit beliebig oft ein anderes Icon anzeigen.

Verwenden einer Bitmap

Im Beispiel wird die Bitmap Hintergrund.bmp über ihren Alias HINTERGRUNDBMP einem TImage als Bild zugewiesen.

  ...

var
  // deklarieren der Hilfsvariable
  Bmp: TBitmap;
begin

  ...

  // erstellt die Hilfsvariable
  Bmp := TBitmap.Create;

  try
    // weist der Hilfsvariablen die Ressource zu
    Bmp.LoadFromResourceName(HInstance, 'HINTERGRUNDBMP');
    // weist den Inhalt der Hilfsvariablen dem Image zu
    Form1.Image1.Picture.Assign(Bmp);
  finally
    // Freigabe der Hilfsvariable
    FreeAndNil(Bmp);
  end;

  ...

end;

Mit dieser Vorgehensweise kann das Programm während der Programmlaufzeit beliebig oft ein anderes Bild anzeigen.

Verwenden einer JPG-Datei (selbstdefinierte Resource)

Für die Konstante RT_RCDATA wird die Unit Windows benötigt.

Im Beispiel wird die Datei Hintergrund.jpg über ihren Alias HINTERGRUNDJPG einem TJPEGImage als Bild zugewiesen.

  ...
uses
  Windows, ...
  ...

var
  // deklarieren der Hilfsvariablen
   JPGImage: TJPEGImage;  // Hilfsvariable 1
   RS: TResourceStream;   // Hilfsvariable 2
begin

  ...

  // erstellt die Hilfsvariable 1
  JPGImage := TJPEGImage.Create;
  try
    // erstellt die Hilfsvariable 2 und weist ihr die Ressource zu
    RS := TResourceStream.Create(hInstance, 'HINTERGRUNDJPG', RT_RCDATA);
    try
      // weist der Hilfsvariablen 1 den Inhalt der Hilfsvariablen 2 zu
      JPGImage.LoadFromStream(RS);
      // weist den Inhalt der Hilfsvariablen 1 dem Image zu
      Form1.Image1.Picture.Assign(JPGImage);
    finally
      // Freigabe der Hilfsvariablen 2
      FreeAndNil(RS);
    end;
  finally
    // Freigabe der Hilfsvariablen 1
    FreeAndNil(JPGImage);
  end;

  ...

end;

Mit dieser Vorgehensweise kann das Programm während der Programmlaufzeit beliebig oft ein anderes Bild anzeigen.

Verwenden einer Gif-Datei (selbstdefinierte Resource)

Für die Konstante RT_RCDATA wird die Unit Windows benötigt.

Im Beispiel wird die Datei Hintergrund.jpg über ihren Alias HINTERGRUNDJPG einem TJPEGImage als Bild zugewiesen.

  ...
uses
  Windows, ...
  ...

var
  // deklarieren der Hilfsvariablen
   GifImage: TGifImage;   // Hilfsvariable 1
   RS: TResourceStream;   // Hilfsvariable 2
begin

 ...

  // erstellt die Hilfsvariable 1
  GifImage := TGifImage.Create;
  try
    // erstellt die Hilfsvariable 2 und weist ihr die Ressource zu
    RS := TResourceStream.Create(hInstance, 'HINTERGRUNDGIF', RT_RCDATA);
    try
      // weist der Hilfsvariablen 1 den Inhalt der Hilfsvariablen 2 zu
      GifImage.LoadFromStream(RS);
      // weist den Inhalt der Hilfsvariablen 1 dem Image zu
      Form1.Image1.Picture.Assign(GifImage);
    finally
      // Freigabe der Hilfsvariablen 2
      FreeAndNil(RS);
    end;
  finally
    // Freigabe der Hilfsvariablen 1
    FreeAndNil(GifImage);
  end;

  ...

end;

Mit dieser Vorgehensweise kann das Programm während der Programmlaufzeit beliebig oft ein anderes Bild anzeigen.

Verwenden einer PNG-Datei (selbstdefinierte Resource)

Für die Konstante RT_RCDATA wird die Unit Windows benötigt.

Im Beispiel wird die Datei Hintergrund.jpg über ihren Alias HINTERGRUNDJPG einem TJPEGImage als Bild zugewiesen.

  ...
uses
  Windows, Graphics, Classes, ...
  ...

var
  // deklarieren der Hilfsvariablen
   PNGImage: TPicture;  // Hilfsvariable 1
   RS: TResourceStream; // Hilfsvariable 2
begin

  ...

   // erstellt die Hilfsvariable 1
   PNGImage := TPicture.Create;
   try
      // erstellt die Hilfsvariable 2 und weist ihr die Ressource zu
      RS := TResourceStream.Create(hInstance, 'HINTERGRUNDPNG', RT_RCDATA);
      try
         // weist der Hilfsvariablen 1 den Inhalt der Hilfsvariablen 2 zu
         PNGImage.LoadFromStream(RS);
         // weist den Inhalt der Hilfsvariablen 1 dem Image zu
         Form1.Image1.Picture.Assign(PNGImage);
      finally
         // Freigabe der Hilfsvariablen 2
         FreeAndNil(RS);
      end;
   finally
      // Freigabe der Hilfsvariablen 1
      FreeAndNil(PNGImage);
   end;

   ...

end;

Mit dieser Vorgehensweise kann das Programm während der Programmlaufzeit beliebig oft ein anderes Bild anzeigen.

Verwenden eines Mauszeigers

  ...
var
   // deklarieren der Hilfsvariable
   MausCursor: TCursorImage;
begin

  ...

  // erstellt die Hilfsvariable
  MausCursor := TCursorImage.Create;

  try
     // weist der Hilfsvariablen die Ressource zu
     MausCursor.LoadFromResourceName(HInstance, 'FarbCursorNormal');
     // weist den Handle der Hilfsvariablen dem Standardcursor zu
     Screen.Cursors[1] := MausCursor.ReleaseHandle;
     // aktiviert den Standardcursor
     Screen.Cursor := 1;
  finally
     // Freigabe der Hilfsvariable
     FreeAndNil(MausCursor);
  end;

  ...

end;

Mit dieser Vorgehensweise kann das Programm während der Programmlaufzeit beliebig oft einen anderen Mauszeiger anzeigen.

Verwenden einer Wave-Datei

...

Uses
  MMSystem, ...

  ...

  // deklarieren der Variablen
  hFind: THandle;
  hRes: THandle;
  wavLied: PChar;

begin

  ...

  // ermittelt den Zeiger auf die Recource
  hFind := FindResource(HInstance, 'TON', 'WAVE');

  // prüft, ob die Ressource gefunden wurde
  if hFind > 0 then
  begin
    // lädt die Recource
    hRes := LoadResource(HInstance, hFind);
    // prüft, ob die WAVE-Ressource geladen wurde
    if hRes > 0 then
    begin
      // sperrt die WAVE-Ressource für andere Unterprogramme
      // und weist ihren Inhalt dem Datentyp PChar zu
      wavLied := LockResource(hRes);
      try
        // prüft, ob die WAVE-Ressource zugewiesen wurde
        if Assigned(wavLied) then
          // spielt die WAVE-Ressource ab
          SndPlaySound(wavLied, snd_ASync or snd_Memory);
      finally
        // entsperrt die WAVE-Ressource
        UnlockResource(hRes);
        // gibt den Speicher der WAVE-Ressource frei
        FreeResource(hRes);
      end;
    end;
  end;

  ...

end;

Mit dieser Vorgehensweise kann das Programm während der Programmlaufzeit beliebig oft eine andere WAV-Ressource ausführen.