Od bitmapa do ikona do pokazivača do nizova tablica svaki program Windows koristi resurse. Resursi jesu oni elementi programa koji podržavaju program, ali nisu izvršni kod. U ovom ćemo članku proći kroz nekoliko primjera upotrebe bitnih slika, ikona i kursora iz resursa.
Položaj resursa
Postavljanje resursa u .exe datoteku ima dva glavna prednosti:
- Resursima se može pristupiti brže jer je potrebno manje vremena za pronalaženje resursa u izvršnoj datoteci nego što je potrebno za učitavanje iz datoteke s diska.
- Programska datoteka i resursi mogu se nalaziti u jednoj jedinici (.exe datoteka) bez potrebe za puno potpornih datoteka.
Uređivač slika
Prije svega, moramo stvoriti datoteku s resursima. Zadano proširenje za datoteke s resursima je.OIE. Datografske datoteke mogu se stvoriti pomoću Delphijevog uređivača slika.
Možete imenovati datoteku resursa sve što želite, pod uvjetom da ima ekstenziju ".RES", a ime datoteke bez proširenja nije isto kao i bilo koja jedinica datoteke ili projekta. To je važno jer, prema zadanim postavkama, svaki
Delphi projekt koja se sastavlja u aplikaciju, ima datoteku resursa s istim nazivom kao datoteku projekta, ali s nastavkom ".RES". Najbolje je spremiti datoteku u isti direktorij kao i datoteku vašeg projekta.Uključivanje resursa u aplikacije
Da bismo pristupili vlastitoj datoteci s resursima, moramo reći Delphiju da svoju datoteku resursa poveže s našom aplikacijom. To se postiže dodavanjem naredbe prevoditelja u izvorni kod. Ova direktiva treba odmah slijediti direktivu oblika, poput sljedeće:
{$ R * .DFM}
{$ R DPABOUT.RES}
Nemojte slučajno izbrisati {$ R * .DFM} dio, jer je ovo linija koda koja kaže Delphiju da se poveže u vizualnom dijelu forme. Kad odaberete bitmape za gumbe za brzinu, komponente slike ili komponente gumba, Delphi uključuje datoteku bitmape koju ste odabrali kao dio resursa obrasca. Delphi izolira elemente vašeg korisničkog sučelja u .DFM datoteku.
Za stvarno korištenje resursa morate ih napraviti nekoliko Windows API poziva. Bitmape, kursori i ikone pohranjene u RES datotekama mogu se pronaći pomoću API funkcija LoadBitmap, LoadCursor, i LoadIcon odnosno.
Slike u resursima
Prvi primjer pokazuje kako učitati bitmapu spremljenu kao resurs i prikazati je u TImage komponenta.
postupak TfrMain.btnCanvasPic (Pošiljatelj: TObject);
var bBitmap: TBitmap;
početi
bBitmap: = TBitmap. Stvoriti;
probati
bBitmap. Ručka: = LoadBitmap (hInstance, 'ATHENA');
Slika1.Širina: = bBitmap. Širina;
Image1.Height: = bBitmap. Visina;
Image1.Canvas. Crtanje (0,0, bBitmap);
konačno
bBitmap. Besplatno;
kraj;
kraj;
Napomena: Ako se bitmap koji će se učitati ne nalazi u datoteci s resursima, program će se i dalje izvoditi, ali neće prikazati bitmap. Ovu se situaciju može izbjeći testiranjem kako bi se vidjelo je li bBitmap. ručka je 0 nakon poziva na LoadBitmap () i poduzimanje odgovarajućih koraka. pokušajte / konačno dio u prethodnom kodu ne rješava ovaj problem, ovdje je samo da se osigura da je bBitmap uništen i da se oslobodi povezana memorija.
Drugi način na koji možemo prikazati bitmap iz resursa je sljedeći:
postupak TfrMain.btnLoadPicClick (Pošiljatelj: TObject);
početi
Image1.Picture. Bitmapa.
LoadFromResourceName (hInstance, 'ZEMLJA');
kraj;
Kursori u resursima
Zaslon. Pokazivači [] je red kursora isporučio Delphi. Korištenjem datoteka s resursima možemo dodati prilagođene pokazivače u svojstvo Cursors. Ako ne želimo zamijeniti nijedan zadani, najbolja strategija je korištenje brojeva kursora počevši od 1.
postupak TfrMain.btnUseCursorClick (Pošiljatelj: TObject);
const NewCursor = 1;
početi
Zaslon. Kursori [NewCursor]: =
LoadCursor (hInstance, 'CURHAND');
Image1.Cursor: = NewCursor;
kraj;
Ikone u izvorima
Ako pogledamo Delfi Projekt-Opcije-aplikacija postavke, možemo pronaći da Delphi isporučuje zadanu ikonu za projekt. Ova ikona predstavlja aplikaciju u programu Windows Explorer i kada je aplikacija svedena na minimum. To možemo lako promijeniti klikom na gumb "Učitaj ikonu".
Ako želimo, na primjer, animirati ikonu programa kad je program minimiziran, tada će sljedeći kôd obaviti posao.
Za animaciju nam treba a TTimer komponenta na obrascu. Kôd učitava dvije ikone iz datoteke resursa u niz od TIcon objekata; ovaj niz treba navesti u javnom dijelu glavnog obrasca. Trebat će nam i NrIco, to je tip Integer varijabla, proglašen u javnost dio. NrIco koristi se za praćenje sljedeće ikone za prikaz.
javnost
nrIco: Integer;
MinIcon: niz [0..1] TIcon-a;
...
postupak TfrMain. FormCreate (pošiljalac: TObject);
početi
MinIcon [0]: = TIcon. Stvoriti;
MinIcon [1]: = TIcon. Stvoriti;
MinIcon [0]. Ruka: = LoadIcon (hInstance, 'ICOOK');
MinIcon [1]. Ruka: = LoadIcon (hInstance, 'ICOFOLD');
NrIco: = 0;
Timer1.Interval: = 200;
kraj;
...
postupak TfrMain. Timer1Timer (pošiljalac: TObject);
beginif IsIconic (aplikacija. ručka) zatimpočeti
NrIco: = (1 + NrIco) modni 2;
Primjena. Ikona: = MinIcon [NrIco];
kraj;
kraj;
...
postupak TfrMain. FormDestroy (pošiljalac: TObject);
početi
MinIcon [0] .Free;
MinIcon [1] .Free;
kraj;
U Timer1.OnTimer voditelj događaja, IsMinimized funkcija se koristi za provjeru moramo li animirati našu glavnu ikonu ili ne. Bolji način da se to postigne bilo bi snimanje gumba za maksimiziranje / minimiziranje i tada djelovanje.
Završne riječi
U datoteke s resursima možemo staviti bilo što (dobro, ne sve). Ovaj vam je članak pokazao kako se koriste resursi za upotrebu / prikazivanje bitne slike, pokazivača ili ikone u vašoj aplikaciji Delphi.
Napomena: Kada spremimo projekt Delphi na disk, Delphi automatski stvara jednu .RES datoteku koja ima isto ime kao i projekt (ako ništa drugo, glavna je ikona projekta unutar). Iako možemo izmijeniti ovu datoteku resursa, to nije preporučljivo.