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 des bitmaps, des icônes et des curseurs des ressources.
Placer des ressources dans le fichier .exe a deux principaux avantages:
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.
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 se compile dans une application possède un fichier de ressources portant 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.
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 effectuer quelques appels API Windows. 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.
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.Create;
essayer
bBitmap.Handle: = LoadBitmap (hInstance, 'ATHENA');
Image1.Width: = bBitmap.Width;
Image1.Height: = bBitmap.Height;
Image1.Canvas.Draw (0,0, bBitmap);
enfin
bBitmap.Free;
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.Handle est nul après un appel à LoadBitmap () et prendre les mesures appropriées. La partie try / finally dans le code précédent ne résout pas ce problème, elle 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;
Screen.Cursors [] 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
Screen.Cursors [NewCursor]: =
LoadCursor (hInstance, 'CURHAND');
Image1.Cursor: = NewCursor;
fin;
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, qui est une variable de type Integer, déclarée dans le 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.Create;
MinIcon [1]: = TIcon.Create;
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.Handle) ensuite commencer
NrIco: = (NrIco + 1) mod 2;
Application.Icon: = 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'y parvenir serait de capturer les boutons maximiser / minimiser et d'agir.
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é.