Sådan bruger Delphi ressourcefiler

click fraud protection

Fra bitmaps til ikoner til markører til strengetabeller bruger hvert Windows-program ressourcer. Ressourcer er de elementer i et program, der understøtter programmet, men ikke er eksekverbar kode. I denne artikel vil vi gennemgå nogle eksempler på brugen af ​​bitmaps, ikoner og markører fra ressourcer.

Ressourcernes placering

Placering af ressourcer i .exe-filen har to hovedområder fordele:

  • Ressourcerne kan fås hurtigere, fordi det tager mindre tid at finde en ressource i den eksekverbare fil, end det gør for at indlæse den fra en diskfil.
  • Programfilen og ressourcerne kan indeholde i en enkelt enhed (.exe-filen) uden behov for en masse understøttende filer.

Billedredigereren

Først og fremmest skal vi oprette en ressourcefil. Standardudvidelsen til ressourcefiler er.RES. Ressourcefiler kan oprettes med Delphis Image Editor.

Du kan navngive ressourcefilen alt, hvad du ønsker, så længe den har udvidelsen ".RES", og filnavnet uden udvidelsen er ikke det samme som en enhed eller et projektfilnavn. Dette er vigtigt, fordi som standard hver

instagram viewer
Delphi-projekt der samles til en applikation har en ressourcefil med samme navn som projektfilen, men med udvidelsen ".RES". Det er bedst at gemme filen i det samme bibliotek som din projektfil.

Inkl. Ressourcer i applikationer

For at få adgang til vores egen ressourcefil, må vi bede Delphi om at linke vores ressourcefil ind i vores applikation. Dette opnås ved at tilføje et kompileringsdirektiv til kildekoden. Dette direktiv skal straks følge formdirektivet, ligesom følgende:

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

Slet ikke ved en fejltagelse {$ R * .DFM} -del, da dette er den kodelinie, der fortæller Delphi at linke i formens visuelle del. Når du vælger bitmaps til hastighedsknapper, billedkomponenter eller knapkomponenter, inkluderer Delphi den bitmap-fil, du valgte som en del af formularens ressource. Delphi isolerer dine brugergrænsefladelementer i .DFM-filen.

For faktisk at bruge ressourcen skal du oprette et par Windows API opkald. Bitmaps, markører og ikoner, der er gemt i RES-filer, kan hentes ved hjælp af API-funktionerne LoadBitmap, LoadCursor, og LoadIcon henholdsvis.

Billeder i ressourcer

Det første eksempel viser, hvordan man indlæser en bitmap, der er gemt som en ressource, og viser den i en TImage komponent.

procedure TfrMain.btnCanvasPic (Afsender: TObject);
Var bBitmap: TBitmap;
begynde
bBitmap: = TBitmap. Skab;
prøve
bBitmap. Håndtag: = LoadBitmap (hInstance, 'ATHENA');
Image1.Bredde: = bBitmap. Bredde;
Billede1.Højde: = bBitmap. Højde;
Image1.Canvas. Tegn (0,0, bBitmap);
endelig
bBitmap. Gratis;
ende;
ende;

Bemærk: Hvis bitmap, der skal indlæses, ikke findes i ressourcefilen, kører programmet stadig, det viser bare ikke bitmap. Denne situation kan undgås ved at teste for at se, om bBitmap. Håndtere er nul efter et opkald til LoadBitmap () og tage de passende skridt. Det prøve / endelig del i den forrige kode løser ikke dette problem, det er bare her for at sikre sig, at bBitmap ødelægges og dens tilknyttede hukommelse frigøres.

En anden måde vi kan bruge til at vise en bitmap fra en ressource er som følger:

procedure TfrMain.btnLoadPicClick (Afsender: TObject);
begynde
Image1.Picture. Bitmap.
LoadFromResourceName (hInstance, 'EARTH');
ende;

Markører i ressourcer

Screen. Markører [] er en matrix af markører leveret af Delphi. Ved at bruge ressourcefiler kan vi tilføje tilpassede markører til markøren egenskab. Medmindre vi ønsker at erstatte nogen af ​​standardindstillingerne, er den bedste strategi at bruge markørenumre fra 1.

procedure TfrMain.btnUseCursorClick (Afsender: TObject);
const Ny markør = 1;
begynde
Screen. Markører [NewCursor]: =
LoadCursor (hInstance, 'CURHAND');
Image1.Cursor: = NewCursor;
ende;

Ikoner i ressourcer

Hvis vi ser på Delphi's Projekt-Indstillinger-program indstillinger, kan vi konstatere, at Delphi leverer standardikonet til et projekt. Dette ikon repræsenterer applikationen i Windows Stifinder, og når applikationen er minimeret. Vi kan let ændre dette ved at klikke på knappen 'Indlæs ikon'.

Hvis vi f.eks. Ønsker at animere programmets ikon, når programmet minimeres, udfører følgende kode jobbet.

Til animationen har vi brug for en TTimer komponent på en formular. Koden indlæser to ikoner fra ressourcefilen i en matrix af Ticon objekter; denne matrix skal erklæres i den offentlige del af hovedformen. Vi har også brug for det NrIco, det er en heltalstype variabel, erklæret i offentlig en del. Det NrIco bruges til at holde styr på det næste ikon, der skal vises.

offentlig
nrIco: Heltal;
MinIcon: matrix [0..1] af TIcon;
...
procedure TfrMain. FormCreate (Afsender: TObject);
begynde
MiniCon [0]: = Ticon. Skab;
MiniCon [1]: = Ticon. Skab;
MinIcon [0]. Håndtag: = LoadIcon (hInstance, 'ICOOK');
MinIcon [1]. Håndtag: = LoadIcon (hInstance, 'ICOFOLD');
NrIco: = 0;
Timer1.Interval: = 200;
ende;
...
procedure TfrMain. Timer1Timer (Afsender: TObject);
beginif IsIconic (anvendelse. Håndtere) derefterbegynde
NrIco: = (NrIco + 1) mod 2;
Ansøgning. Ikon: = MiniCon [NrIco];
ende;
ende;
...
procedure TfrMain. FormDestroy (Afsender: TObject);
begynde
MiniCon [0] .Gratis;
MiniCon [1] .Gratis;
ende;

I Timer1.OnTimer event handler, IsMinimized funktion bruges til at se, om vi er nødt til at animere vores hovedikon eller ej. En bedre måde at opnå dette ville være at fange maksimering / minimering af knapperne og end handle.

Afsluttende ord

Vi kan placere alt (ja, ikke alt) i ressourcefiler. Denne artikel har vist dig, hvordan du bruger ressourcer til at bruge / vise bitmap, cursor eller et ikon i din Delphi-applikation.

Bemærk: Når vi gemmer et Delphi-projekt på disken, opretter Delphi automatisk en .RES-fil, der har samme navn som projektet (hvis intet andet er hovedikonet for projektet indeni). Selvom vi kan ændre denne ressourcefil, anbefales det ikke.

instagram story viewer