Difference between revisions of "Ressourcefile/de"

From Lazarus wiki
Jump to navigationJump to search
m (some typos)
Line 10: Line 10:
 
=Einleitung=
 
=Einleitung=
 
Dieser Artikel beschreibt die Erstellung und Verwendung von Ressourcendateien speziell für die Programmierung unter Windows.<br>
 
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 Recourcn in das eigene Windowsprogramm.<br>
+
Als Beispiel dient das Einfügen von mehreren Ressourcen in das eigene Windowsprogramm.<br>
 
<br>
 
<br>
 
Eine Ressourcendatei kann auf zwei Wege eingebunden werden:<br>
 
Eine Ressourcendatei kann auf zwei Wege eingebunden werden:<br>
Line 19: Line 19:
  
 
=Schritt 1: Erstellen der Ressourcendatei als Textdatei=
 
=Schritt 1: Erstellen der Ressourcendatei als Textdatei=
Zu erst müssen Sie sich einige Icons erstellen oder beschaffen. Das gleiche gilt für die Bitmap- und die Jpg-Datei.<br>
+
Zuerst müssen Sie sich einige Icons erstellen oder beschaffen. Das gleiche gilt für die Bitmap- und die Jpg-Datei.<br>
 
Dann erstellen Sie mit einem Texteditor (z. B. Notepad) eine Datei mit der Endung <b>.rc</b>.<br>
 
Dann erstellen Sie mit einem Texteditor (z. B. Notepad) eine Datei mit der Endung <b>.rc</b>.<br>
 
Die Ressourcendatei muss die Dateiendung <b>.rc</b> haben.<br>
 
Die Ressourcendatei muss die Dateiendung <b>.rc</b> haben.<br>
Line 25: Line 25:
 
In diese Ressourcendatei tragen Sie die Icons nach folgendem Schema ein:<br>
 
In diese Ressourcendatei tragen Sie die Icons nach folgendem Schema ein:<br>
 
[Der Name unter dem das Icon in Ihrem Programm verwendet werden soll] [Ressourcentyp] [Name der einzubindenden Datei]<br>
 
[Der Name unter dem das Icon in Ihrem Programm verwendet werden soll] [Ressourcentyp] [Name der einzubindenden Datei]<br>
Beispiel für den Aufbau der Recourcendatei:<br>
+
Beispiel für den Aufbau der Ressourcendatei:<br>
 
  MAINICON ICON "stern.ico"
 
  MAINICON ICON "stern.ico"
 
  ZWEITES ICON "haus.ico"
 
  ZWEITES ICON "haus.ico"
Line 93: Line 93:
 
==Verwenden einer Bitmap==
 
==Verwenden einer Bitmap==
 
<br>
 
<br>
Im Beispiel wird die Bitmap Hintergrund.bmp über seinen Alias HINTERGRUNDBMP einem TImage als Bild zugewiesen.<br>
+
Im Beispiel wird die Bitmap Hintergrund.bmp über ihren Alias HINTERGRUNDBMP einem TImage als Bild zugewiesen.<br>
 
<syntaxhighlight>
 
<syntaxhighlight>
 
   ...
 
   ...
Line 108: Line 108:
  
 
   try
 
   try
     // weist der Hilfsvariablen die Recource zu
+
     // weist der Hilfsvariablen die Ressource zu
 
     Bmp.LoadFromResourceName(HInstance, 'HINTERGRUNDBMP');
 
     Bmp.LoadFromResourceName(HInstance, 'HINTERGRUNDBMP');
 
     // weist den Inhalt der Hilfsvariablen dem Image zu
 
     // weist den Inhalt der Hilfsvariablen dem Image zu
Line 125: Line 125:
 
==Verwenden einer JPG-Datei (selbstdefinierte Resource)==
 
==Verwenden einer JPG-Datei (selbstdefinierte Resource)==
 
<br>
 
<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>
 
<br>
 
<br>
Im Beispiel wird die Datei Hintergrund.jpg über seinen Alias HINTERGRUNDJPG einem TJPEGImage als Bild zugewiesen.<br>
+
Im Beispiel wird die Datei Hintergrund.jpg über ihren Alias HINTERGRUNDJPG einem TJPEGImage als Bild zugewiesen.<br>
 
<syntaxhighlight>
 
<syntaxhighlight>
 
   ...
 
   ...
Line 145: Line 145:
 
   JPGImage := TJPEGImage.Create;
 
   JPGImage := TJPEGImage.Create;
 
   try
 
   try
     // erstellt die Hilfsvariable 2 und weist ihr die Recource zu
+
     // erstellt die Hilfsvariable 2 und weist ihr die Ressource zu
 
     RS := TResourceStream.Create(hInstance, 'HINTERGRUNDJPG', RT_RCDATA);
 
     RS := TResourceStream.Create(hInstance, 'HINTERGRUNDJPG', RT_RCDATA);
 
     try
 
     try
       // weist der Hilfsvariablen 1 die den Inhalt der Hilfsvariablen 2 zu
+
       // weist der Hilfsvariablen 1 den Inhalt der Hilfsvariablen 2 zu
 
       JPGImage.LoadFromStream(RS);
 
       JPGImage.LoadFromStream(RS);
 
       // weist den Inhalt der Hilfsvariablen 1 dem Image zu
 
       // weist den Inhalt der Hilfsvariablen 1 dem Image zu
 
       Form1.Image1.Picture.Assign(JPGImage);
 
       Form1.Image1.Picture.Assign(JPGImage);
 
     finally
 
     finally
       // Freigabe der Hilfsvariable 2
+
       // Freigabe der Hilfsvariablen 2
 
       FreeAndNil(RS);
 
       FreeAndNil(RS);
 
     end;
 
     end;
 
   finally
 
   finally
     // Freigabe der Hilfsvariable 1
+
     // Freigabe der Hilfsvariablen 1
 
     FreeAndNil(JPGImage);
 
     FreeAndNil(JPGImage);
 
   end;
 
   end;

Revision as of 19:12, 16 March 2013

Windows logo - 2012.svg

Dieser Artikel behandelt ausschließlich Windows.

Siehe auch: Multiplatform Programming Guide/de

Deutsch (de)


Dieser Artikel bezieht sich auf Lazarus Version 1.0.6 und höher.
Dieser Artikel beschäftigt sich mit der Windowsprogrammierung.
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.

Eine Ressourcendatei kann auf zwei Wege eingebunden werden:

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



Schritt 1: Erstellen der Ressourcendatei als Textdatei

Zuerst müssen Sie sich einige Icons erstellen oder beschaffen. Das gleiche gilt für die Bitmap- und die Jpg-Datei.
Dann erstellen Sie mit einem Texteditor (z. B. Notepad) eine Datei mit der Endung .rc.
Die Ressourcendatei muss die Dateiendung .rc haben.
Diese Ressourcendatei öffnen Sie im Texteditor.
In diese Ressourcendatei tragen Sie die Icons nach folgendem Schema ein:
[Der Name unter dem das Icon in Ihrem Programm verwendet werden soll] [Ressourcentyp] [Name der einzubindenden Datei]
Beispiel für den Aufbau der Ressourcendatei:

MAINICON ICON "stern.ico"
ZWEITES ICON "haus.ico"
DRITTES ICON "blume.ico"
VIERTES ICON "baeume.ico"
HINTERGRUNDBMP BITMAP "Hintergrund.bmp"
HINTERGRUNDJPG RCDATA "Hintergrund.jpg"


Vergessen Sie das Speichern der Datei nicht.
In diesem Beispiel heisst die Datei test.rc.


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 Freepascal.
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.


--Olaf 09:38, 16 February 2013 (UTC)