Kā Delphi izmanto resursu failus

Sākot no bitkartēm, ikonām, kursoriem un virkņu tabulām, katra Windows programma izmanto resursus. Resursi ir tie programmas elementi, kas atbalsta programmu, bet nav izpildāms kods. Šajā rakstā mēs apskatīsim dažus bitkartes, ikonu un kursoru izmantošanas no resursiem piemērus.

Resursu atrašanās vieta

Resursu ievietošanai .exe failā ir divi galvenie priekšrocības:

  • Resursiem var piekļūt ātrāk, jo resursa atrašana izpildāmajā failā prasa mazāk laika nekā tā ielādēšana no diska faila.
  • Programmas failu un resursus var ietvert vienā vienībā (.exe failā), nevajadzīgi daudz atbalsta failu.

Attēlu redaktors

Pirmkārt, mums ir jāizveido resursa fails. Resursa failu noklusējuma paplašinājums ir.RES. Resursu failus var izveidot, izmantojot Delphi attēlu redaktoru.

Resursa failu var nosaukt par visu, ko vēlaties, ja vien tam ir paplašinājums “.RES” un faila nosaukums bez paplašinājuma nav tāds pats kā jebkuras vienības vai projekta faila nosaukums. Tas ir svarīgi, jo pēc noklusējuma katrs Delphi projekts

instagram viewer
kas apkopojas lietojumprogrammā, ir resursa fails ar tādu pašu nosaukumu kā projekta failam, bet ar paplašinājumu “.RES”. Vislabāk ir saglabāt failu tajā pašā direktorijā kā projekta fails.

Resursu iekļaušana lietojumprogrammās

Lai piekļūtu mūsu pašu resursa failam, mums Delphi ir jāpasaka sasaistīt mūsu resursa failu ar mūsu lietojumprogrammu. Tas tiek paveikts, pievienojot avota kodam kompilācijas direktīvu. Šai direktīvai nekavējoties jāievēro direktīvas forma, piemēram:

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

Nejauši neizdzēsiet {$ R * .DFM} daļu, jo šī ir koda rinda, kas liek Delfiem saistīties formas vizuālajā daļā. Kad jūs izvēlaties ātruma pogu, attēlu komponentu vai pogu pogas bitkartes, Delphi iekļauj bitkartes failu, kuru izvēlējāties kā daļu no veidlapas resursa. Delphi izolē jūsu lietotāja interfeisa elementus .DFM failā.

Lai reāli izmantotu resursu, jums ir jāizdara daži Windows API zvani. Bitu kartes, kursorus un ikonas, kas glabājas RES failos, var iegūt, izmantojot API funkcijas LoadBitmap, LoadCursor, un LoadIcon attiecīgi.

Attēli resursos

Pirmajā piemērā parādīts, kā ielādēt bitu karti, kas tiek saglabāta kā resurss, un parādīt to TImage komponents.

procedūra TfrMain.btnCanvasPic (Sūtītājs: TObject);
var bBitmap: TBitmap;
sākt
bBitmap: = TBitmap. Izveidot;
mēģiniet
bBitmap. Rokturis: = LoadBitmap (hInstance, 'ATHENA');
Attēls1.Platums: = bBitmap. Platums;
Image1.Height: = bBitmap. Augums;
Image1.Canvas. Draw (0,0, bBitmap);
beidzot
bBitmap. Bezmaksas;
beigas;
beigas;

Piezīme. Ja ielādējamā bitkarte nav resursa failā, programma joprojām darbosies, tā vienkārši nerādīs bitkarti. No šīs situācijas var izvairīties, pārbaudot, vai bBitmap. Rokturis ir nulle pēc zvana uz LoadBitmap () un veicot attiecīgus pasākumus. mēģināt / beidzot Iepriekšējā koda daļa neatrisina šo problēmu, šeit ir jāpārliecinās, ka tiek iznīcināta bBitmap un atbrīvota ar to saistītā atmiņa.

Vēl viens veids, kā mēs varam parādīt bitkartes no resursa, ir šāds:

procedūra TfrMain.btnLoadPicClick (Sūtītājs: TObject);
sākt
Attēls1.Attēls. Bitmap.
LoadFromResourceName (hInstance, 'EARTH');
beigas;

Kursori resursos

Ekrāns. Kursori [] ir masīvs kursoru, kurus piegādājis Delfi. Izmantojot resursu failus, īpašībai Cursors varam pievienot pielāgotus kursorus. Ja vien mēs nevēlamies aizstāt kādu no noklusējumiem, labākā stratēģija ir izmantot kursora numurus, sākot no 1.

procedūra TfrMain.btnUseCursorClick (Sūtītājs: TObject);
const NewCursor = 1;
sākt
Ekrāns. Kursori [NewCursor]: =
LoadCursor (hInstance, 'CURHAND');
Image1.Cursor: = NewCursor;
beigas;

Resursu ikonas

Ja mēs paskatāmies uz Delfiem Projekts-Iespējas-Pieteikums iestatījumus, mēs varam atrast, ka Delphi piegādā projekta noklusējuma ikonu. Šī ikona apzīmē lietojumprogrammu Windows Explorer un kad programma ir samazināta līdz minimumam. To var viegli mainīt, noklikšķinot uz pogas Ielādēt ikonu.

Ja mēs vēlamies, piemēram, animēt programmas ikonu, kad programma ir samazināta līdz minimumam, šo darbu veiks šis kods.

Animācijai mums ir nepieciešams TTimer sastāvdaļa veidlapā. Kods ielādē divas ikonas no resursa faila masīvā TIcon priekšmeti; šis masīvs ir jādeklarē galvenās formas publiskajā daļā. Mums arī vajadzēs NrIco, tas ir vesels skaitlis mainīgs, deklarēts publiski daļa. NrIco tiek izmantots, lai izsekotu nākamajai rādāmai ikonai.

publiski
nrIco: vesels skaitlis;
MinIcon: TIcon masīvs [0..1];
...
procedūra TfrMain. FormCreate (Sūtītājs: TObject);
sākt
MinIcon [0]: = TIcon. Izveidot;
MinIcon [1]: = TIcon. Izveidot;
MinIcon [0]. Rokas: = LoadIcon (hInstance, 'ICOOK');
MinIcon [1]. Rokturis: = LoadIcon (hInstance, 'ICOFOLD');
NrIco: = 0;
Taimeris1.Intervāls: = 200;
beigas;
...
procedūra TfrMain. Timer1Timer (Sūtītājs: TObject);
iesākums IsIconic (lietojumprogramma. Rokturis) tadsākt
NrIco: = (NrIco + 1) mod 2;
Pieteikums. Ikona: = MinIcon [NrIco];
beigas;
beigas;
...
procedūra TfrMain. FormDestroy (Sūtītājs: TObject);
sākt
MinIcon [0]. Bezmaksas;
MinIcon [1]. Bezmaksas;
beigas;

Iekš Taimeris1.OnTimer pasākumu kopējs, IrMinimized funkcija tiek izmantota, lai redzētu, vai mums ir jāaktivizē mūsu galvenā ikona vai nē. Labāks veids, kā to panākt, būtu tvert maksimizēt / samazināt pogas un nevis rīkoties.

Nobeiguma vārdi

Resursu failos mēs varam ievietot jebko (arī ne visu). Šajā rakstā ir parādīts, kā izmantot resursus, lai Delphi lietojumprogrammā izmantotu / parādītu bitu karti, kursoru vai ikonu.

Piezīme: saglabājot Delphi projektu diskā, Delphi automātiski izveido vienu .RES failu, kura nosaukums ir tāds pats kā projektam (ja nekas cits, projekta galvenā ikona atrodas iekšpusē). Lai gan mēs varam mainīt šo resursa failu, tas nav ieteicams.