Kuidas Delphi ressursifaile kasutab?

Iga Windowsi programm kasutab ressursse bitikaartidest ikoonideni, kursoriteni ja stringitabeliteni. Ressursid on need programmi elemendid, mis toetavad programmi, kuid ei ole käivitatavad koodid. Selles artiklis tutvume mõne näitega bitikaartide, ikoonide ja kursorite kasutamisest ressursside abil.

Ressursside asukoht

Ressursside paigutamisel .exe-failis on kaks peamist eelised:

  • Ressurssidele pääseb juurde kiiremini, kuna ressursi leidmine käivitatavas failis võtab vähem aega kui selle laadimine kettafailist.
  • Programmifaili ja ressursse saab sisaldada ühes ühikus (.exe-fail) ilma, et oleks vaja palju tugifaile.

Pildiredaktor

Kõigepealt peame looma ressursifaili. Ressursifailide vaikelaiendus on.RES. Ressursifaile saab luua Delphi pildiredaktoriga.

Võite ressursifailile nimetada ükskõik mida, kui sellel on laiend ".RES" ja ilma laiendita failinimi pole sama mis tahes üksuse või projekti failinimel. See on oluline, sest vaikimisi iga Delphi projekt mis kompileeritakse rakenduseks, on ressursifail sama nimega, mis projektifailil, kuid laiendiga ".RES". Parem on salvestada fail samasse kataloogi kui projektifail.

instagram viewer

Ressursside kaasamine rakendustesse

Oma ressursifailile juurde pääsemiseks peame Delphil käskima ressursifail oma rakendusega siduda. See saavutatakse lähtekoodile kompilaatoridirektiivi lisamisega. See direktiiv peab kohe järgima vormidirektiivi, näiteks järgmiselt:

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

Ärge kustutage {$ R * .DFM} osa kogemata, kuna see on koodirida, mis käsib Delphil vormi visuaalses osas linkida. Kui valite kiirnuppude, pildikomponentide või nupukomponentide bitikaardid, sisaldab Delphi vormi ressursina osana valitud bittkaardifaili. Delphi eraldab teie kasutajaliidese elemendid .DFM-faili.

Ressursi tegelikuks kasutamiseks peate tegema mõned Windowsi API kutsub. RES-failidesse salvestatud bitikaarte, kursoreid ja ikoone saab hankida API funktsioonide abil LoadBitmap, LoadCursor, ja LoadIcon vastavalt.

Pildid allikates

Esimene näide näitab, kuidas laadida ressursina talletatud bittkaarti ja seda kuvada a-vormingus Kujutis komponent.

protseduur TfrMain.btnCanvasPic (saatja: TObject);
var bBitmap: TBitmap;
alustada
bBitmap: = TBitmap. Loo;
proovida
bBitmap. Käepide: = LoadBitmap (hInstance, 'ATHENA');
Pilt1.Laigus: = bBitmap. Laius;
Pilt1.Kõrgus: = bBitmap. Kõrgus;
Pilt1.Canvas. Joonistamine (0,0, bBitmap);
lõpuks
bBitmap. Tasuta;
lõpp;
lõpp;

Märkus. Kui laaditavat bitikaarti pole ressursifailis, käivitatakse programm ikkagi, siis lihtsalt ei kuvata bitikaarti. Seda olukorda saab vältida katsetades, kas: bBitmap. Käepide on pärast kõnet telefonile null LoadBitmap () ja astudes vastavad sammud. proovida / lõpuks Osa eelmisest koodist ei lahenda seda probleemi, siin tuleb lihtsalt veenduda, et bBitmap hävitatakse ja sellega seotud mälu vabastatakse.

Teine viis, mida saame ressursi bitmap kuvamiseks kasutada, on järgmine:

protseduur TfrMain.btnLoadPicClick (saatja: TObject);
alustada
Pilt1.Pilt. Bitmap.
LoadFromResourceName (hInstance, 'EARTH');
lõpp;

Kursorid ressurssides

Ekraan. Kursorid [] on massiiv kursorite poolt Delphi poolt. Ressursifailide abil saame lisada kohandatud kursoreid atribuudile Cursors. Kui me ei soovi ühtegi vaikeseadet asendada, on parim strateegia kasutada kursorinumbreid alates 1.

protseduur TfrMain.btnUseCursorClick (Saatja: TObject);
const NewCursor = 1;
alustada
Ekraan. Kursorid [NewCursor]: =
LoadCursor (hInstance, 'CURHAND');
Image1.Cursor: = NewCursor;
lõpp;

Ikoonid ressurssides

Kui me vaatame Delphi oma Projekt-valikud-rakendus seaded, võime leida, et Delphi tarnib projekti jaoks vaikimisi ikooni. See ikoon tähistab rakendust Windows Exploreris ja seda, kui rakendus on minimeeritud. Saame seda hõlpsalt muuta, klõpsates nuppu "Laadi ikoon".

Kui tahame näiteks programmi ikooni minimeerida, siis teeb seda järgmine kood.

Animatsiooni jaoks on vaja a TTimer komponent vormil. Kood laadib ressursifailist kaks ikooni massiivi TIcon objektid; see massiiv tuleb deklareerida põhivormi avalikus osas. Vajame ka NrIco, see on täisarv tüüp muutuja, deklareeritud avalik osa. NrIco kasutatakse järgmise kuvatava ikooni jälgimiseks.

avalik
nrIco: täisarv;
MinIcon: TIconi massiiv [0..1];
...
protseduur TfrMain. FormCreate (saatja: TObject);
alustada
MinIcon [0]: = TIcon. Loo;
MinIcon [1]: = TIcon. Loo;
MinIcon [0] .Käepide: = LoadIcon (hInstance, 'ICOOK');
MinIcon [1] .Käepide: = LoadIcon (hInstance, 'ICOFOLD');
NrIco: = 0;
Taimer1.Intervall: = 200;
lõpp;
...
protseduur TfrMain. Timer1Timer (saatja: TObject);
algav IsIconic (rakendus. Käepide) siisalustada
NrIco: = (NrIco + 1) mod 2;
Rakendus. Ikoon: = MinIcon [NrIco];
lõpp;
lõpp;
...
protseduur TfrMain. FormDestroy (saatja: TObject);
alustada
MinIcon [0] .Tasuta;
MinIcon [1] .Tasuta;
lõpp;

Aastal Taimer1.OnTimer ürituste käitleja, MMinimeeritud funktsiooni kasutatakse, et näha, kas peame oma peamist ikooni animeerima või mitte. Parem viis selle saavutamiseks on nuppude maksimeerimine / minimeerimine hõivamine ja mitte toimimine.

Lõppsõnad

Me võime ressursifailidesse paigutada ükskõik mida (ka mitte kõike). See artikkel on teile näidanud, kuidas ressursse kasutada oma Delphi rakenduses bitikaardi, kursori või ikooni kasutamiseks / kuvamiseks.

Märkus. Kui salvestame Delphi projekti kettale, loob Delphi automaatselt ühe .RES-faili, millel on projektiga sama nimi (kui midagi muud pole, on projekti peamine ikoon sees). Kuigi me saame seda ressursifaili muuta, pole see soovitatav.

instagram story viewer