Utilisez les ressources dans votre application Delphi
Date de mise a jour : 05/04/2005
Par
DelphiCool ()
1. Utilisation des ressources
2. introduction
3. Une image BMP
4. Une image JPEG
5. Une image GIF
6. Un fichier texte
7. Une icône
8. Un son Wav
9. Un son MP3
10. Un fichier exécutable
11. Un curseur de souris
12. Un texte d'une StringTable
13. Pour terminer
1. Utilisation des ressources
Qu'est ce qu'un fichier ressource ?
C'est un fichier qui contient votre icône, votre numéro de version et pas mal d'autres choses.
Comment créer ce fichier ressource ?
Comme ce tutoriel parle de l'utilisation d'un fichier de ressources, je vous conseille d'utiliser mon programme Res_HiA.
Vous pouvez aussi consulter ce fichier source.
Télécharger l'exemple qui vous aideras à comprendre :
Exécutable Demo 804 Ko
Source de l'exécutable environ 1 Mo
2. introduction
Pour extraire une ressource dans une application, on doit connaître le nom et le type de cette ressource.
Pour voir de quoi il s'agit, je vous conseille le très bon logiciel Res Hacker, qui vous aidera à comprendre ce dont nous allons parler.
En premier lieu, je déclare une variable Res dans la partie implémentation, afin de l'utiliser partout sans la redéclarer à chaque fois :
var
Res : TResourceStream ;
Mon fichier ressource créé avec Res_HiA est inclus dans l'exécutable comme ceci :
implementation
{$R La_Ressource_en_Plus.res}
3. Une image BMP
 Capture avec Res Hacker
image1.Picture.Bitmap.LoadFromResourceName(hinstance, 'MONBMP');
HInstance est l'instance de votre application.
MONBMP est l'identificateur de le ressource bitmap qui sera placée dans un TImage.
4. Une image JPEG
 Capture avec Res Hacker
Pour utiliser les fichiers jpeg, vous devez ajouter l'unité JPEG dans la clause uses de votre programme :
var jpg: TjpegImage;
begin
jpg := TJPEGimage.Create;
Res := TResourceStream.Create(hinstance, 'MONJPEG', RT_RCDATA);
Jpg.LoadFromStream(Res);
Image1.Picture.Bitmap.Assign(jpg);
Res.Free;
jpg.Free;
End;
On crée un TJPEGImage qui va accueillir votre ressource.
5. Une image GIF
 Capture avec Res Hacker
Il vous faut un composant GIFImage et déclarer l'unité GIFImage dans la clause uses :
var GIF : TGIFImage;
begin
include(GIFImageDefaultDrawOptions, goDirectDraw);
Res := TResourceStream.Create(hinstance, 'MONGIF', 'GIF');
GIF := TGIFImage.Create;
GIF.LoadFromStream(Res);
Image1.Picture.Assign(GIF);
GIF.Free;
Res.Free;
End;
6. Un fichier texte
 Capture avec Res Hacker
Res := TResourceStream.Create(0,'MONTXT','TEXT');
MemoTexte.Lines.LoadFromStream(Res);
Res.Free;
7. Une icône
 Capture avec Res Hacker
var
Icone: TIcon;
begin
Icone := TIcon.Create;
Icone.Handle := LoadIcon(HInstance, 'MONICON');
Icon := Icone;
Image1.Picture.Icon := Icon;
Icone.free;
End;
8. Un son Wav
 Capture avec Res Hacker
Pour jouer un son au format WAV, il faut déclarer l'unité MMSystem dans la clause uses :
var
Hres: THandle;
Pres: PChar;
begin
Hres := FindResource(0, pchar('MONWAV2'), 'WAV');
Hres := LoadResource(0, Hres);
Pres := LockResource(Hres);
sndPlaySound(Pres, SND_MEMORY);
UnLockResource(Hres);
FreeResource(Hres);
End;
9. Un son MP3
 Capture avec Res Hacker
Pour jouer un son au format MP3 j'ai utilisé le composant TMediaPlayer :
Res := TResourceStream.Create(0,'MONMP3','MP3');
Res.SaveToFile(ExtractFilePath(Application.ExeName) + 'mon.mp3');
Res.Free;
mp3Joue.Close;
mp3Joue.FileName := 'mon.mp3';
mp3Joue.Open;
mp3Joue.Play;
10. Un fichier exécutable
 Capture avec Res Hacker
var path : string;
begin
path := ExtractFilePath(Application.ExeName);
Res := TResourceStream.Create(0,'MONEXE','EXEFILE');
Res.SaveToFile(path + 'Monexe.exe');#339999
Res.Free;
WinExec(Pchar(path + 'Monexe.exe'),sw_normal);
End;
Pour lancer l'exe qui est dans mon application, je l'extrais dans le répertoire de l'application.
11. Un curseur de souris
 Capture avec Res Hacker
Screen.Cursors[1] := LoadCursor(HInstance, 'MONCURSEUR');
button12.Cursor := 1;
self.Cursor := 1;
12. Un texte d'une StringTable
 Capture avec Res Hacker
var montexte: array[0..255] of Char;
begin
LoadString(hInstance, 0, montexte, 255);
MemoTexte.Lines.Text := montexte;
End;
Les textes des StringTable, ont un index, c'est par celui-ci qu'on les appellent.
13. Pour terminer
Je n'ai pas la prétention de vous apprendre comment utiliser les ressources, mais de vous montrer ce que j'ai appris.
Bien sur, je sais qu'il y a certainement plus simple à faire que ce que j'ai fais, aussi, je vous prie d'être un peu indulgent avec le débutant que je suis encore.
Merci.
DelphiCool
Site
Mail : delphicool@fr.st
Un grand merci à Alphomega pour son soutient et merci pour la correction d'orthographe.
|