Comment Delphi utilise les fichiers de ressources

Des bitmaps aux icônes en passant par les curseurs et les tables de chaînes, chaque programme Windows utilise des ressources. Ressources sont les éléments d'un programme qui prennent en charge le programme mais ne sont pas du code exécutable. Dans cet article, nous allons parcourir quelques exemples d'utilisation de bitmaps, d'icônes et de curseurs à partir de ressources.

Emplacement des ressources

Placer des ressources dans le fichier .exe a deux principaux avantages:

  • Les ressources sont accessibles plus rapidement car il faut moins de temps pour localiser une ressource dans le fichier exécutable que pour la charger à partir d'un fichier disque.
  • Le fichier de programme et les ressources peuvent être contenus dans une seule unité (le fichier .exe) sans avoir besoin de beaucoup de fichiers de support.

L'éditeur d'images

Tout d'abord, nous devons créer un fichier de ressources. L'extension par défaut pour les fichiers de ressources est.RES. Les fichiers de ressources peuvent être créés avec l'éditeur d'images de Delphi.

instagram viewer

Vous pouvez nommer le fichier de ressources comme vous le souhaitez, tant qu'il porte l'extension ".RES" et que le nom de fichier sans l'extension n'est pas le même que n'importe quel nom de fichier d'unité ou de projet. Ceci est important car, par défaut, chaque Projet Delphi qui compile dans une application a un fichier de ressources avec le même nom que le fichier de projet, mais avec l'extension ".RES". Il est préférable d'enregistrer le fichier dans le même répertoire que votre fichier de projet.

Inclusion de ressources dans les applications

Afin d'accéder à notre propre fichier de ressources, nous devons dire à Delphi de lier notre fichier de ressources à notre application. Ceci est accompli en ajoutant une directive de compilation au code source. Cette directive doit suivre immédiatement la directive formulaire, comme suit:

{$ R * .DFM} 
{$ R DPABOUT.RES}

N'effacez pas accidentellement la partie {$ R * .DFM}, car il s'agit de la ligne de code qui indique à Delphi de créer un lien dans la partie visuelle du formulaire. Lorsque vous choisissez des bitmaps pour les boutons de vitesse, les composants Image ou les composants Button, Delphi inclut le fichier bitmap que vous avez choisi dans le cadre de la ressource du formulaire. Delphi isole vos éléments d'interface utilisateur dans le fichier .DFM.

Pour utiliser réellement la ressource, vous devez faire quelques API Windows appels. Les bitmaps, curseurs et icônes stockés dans des fichiers RES peuvent être récupérés à l'aide des fonctions API LoadBitmap, LoadCursor, et LoadIcon respectivement.

Images dans les ressources

Le premier exemple montre comment charger un bitmap stocké en tant que ressource et l'afficher dans un TImage composant.

procédure TfrMain.btnCanvasPic (expéditeur: TObject);
var bBitmap: TBitmap;
commencer
bBitmap: = TBitmap. Créer;
essayer
bBitmap. Handle: = LoadBitmap (hInstance, 'ATHENA');
Image1.Width: = bBitmap. Largeur;
Image1.Height: = bBitmap. La taille;
Image1.Canvas. Draw (0,0, bBitmap);
enfin
bBitmap. Gratuit;
fin;
fin;

Remarque: Si le bitmap à charger n'est pas dans le fichier de ressources, le programme s'exécutera toujours, il n'affichera simplement pas le bitmap. Cette situation peut être évitée en testant pour voir si le bBitmap. Manipuler est nul après un appel à LoadBitmap () et prendre les mesures appropriées. le essayer / enfin une partie du code précédent ne résout pas ce problème, il est juste là pour s'assurer que le bBitmap est détruit et que sa mémoire associée est libérée.

Une autre façon que nous pouvons utiliser pour afficher un bitmap à partir d'une ressource est la suivante:

procédure TfrMain.btnLoadPicClick (expéditeur: TObject);
commencer
Image1.Picture. Bitmap.
LoadFromResourceName (hInstance, 'EARTH');
fin;

Curseurs en ressources

Écran. Curseurs [] est un tableau de curseurs fournis par Delphi. En utilisant des fichiers de ressources, nous pouvons ajouter des curseurs personnalisés à la propriété Cursors. Sauf si nous souhaitons remplacer l'un des paramètres par défaut, la meilleure stratégie consiste à utiliser des numéros de curseur à partir de 1.

procédure TfrMain.btnUseCursorClick (Sender: TObject);
const NewCursor = 1;
commencer
Écran. Curseurs [NewCursor]: =
LoadCursor (hInstance, 'CURHAND');
Image1.Cursor: = NewCursor;
fin;

Icônes dans les ressources

Si nous regardons Delphi Projet-Options-Application paramètres, nous pouvons constater que Delphi fournit l'icône par défaut pour un projet. Cette icône représente l'application dans l'Explorateur Windows et lorsque l'application est réduite. Nous pouvons facilement changer cela en cliquant sur le bouton «Charger l'icône».

Si nous voulons, par exemple, animer l'icône du programme lorsque le programme est minimisé, alors le code suivant fera le travail.

Pour l'animation, nous avons besoin d'un TTimer composant sur une fiche. Le code charge deux icônes du fichier de ressources dans un tableau de TIcon objets; ce tableau doit être déclaré dans la partie publique du formulaire principal. Nous aurons également besoin NrIco, c'est un type entier variable, déclaré au Publique partie. le NrIco est utilisé pour garder une trace de l'icône suivante à afficher.

Publique
nrIco: Entier;
MinIcon: tableau [0..1] de TIcon;
...
procédure TfrMain. FormCreate (expéditeur: TObject);
commencer
MinIcon [0]: = TIcon. Créer;
MinIcon [1]: = TIcon. Créer;
MinIcon [0] .Handle: = LoadIcon (hInstance, 'ICOOK');
MinIcon [1] .Handle: = LoadIcon (hInstance, 'ICOFOLD');
NrIco: = 0;
Timer1.Interval: = 200;
fin;
...
procédure TfrMain. Timer1Timer (expéditeur: TObject);
beginif IsIconic (Application. Manipuler) ensuitecommencer
NrIco: = (NrIco + 1) mod 2;
Application. Icône: = MinIcon [NrIco];
fin;
fin;
...
procédure TfrMain. FormDestroy (expéditeur: TObject);
commencer
MinIcon [0] .Free;
MinIcon [1] .Free;
fin;

dans le Timer1.OnTimer gestionnaire d'événements, IsMinimized est utilisée pour voir si nous devons animer notre icône principale ou non. Une meilleure façon d'accomplir cela serait de capturer les boutons maximiser / minimiser et d'agir.

Mots finaux

Nous pouvons placer n'importe quoi (enfin, pas tout) dans les fichiers de ressources. Cet article vous a montré comment utiliser des ressources pour utiliser / afficher un bitmap, un curseur ou une icône dans votre application Delphi.

Remarque: Lorsque nous enregistrons un projet Delphi sur le disque, Delphi crée automatiquement un fichier .RES qui porte le même nom que le projet (à défaut d'autre, l'icône principale du projet est à l'intérieur). Bien que nous puissions modifier ce fichier de ressources, ce n'est pas conseillé.

instagram story viewer