De la hărți de bit la pictograme la cursoare până la tabele cu șiruri, fiecare program Windows folosește resurse. Resurse sunt acele elemente ale unui program care acceptă programul, dar nu sunt codul executabil. În acest articol, vom parcurge câteva exemple de utilizare a hărților de bit, pictogramelor și cursoarelor din resurse.
Plasarea resurselor în fișierul .exe are două elemente principale avantaje:
În primul rând, trebuie să creăm un fișier de resurse. Extensia implicită pentru fișierele de resurse este .RES. Fișierele de resurse pot fi create cu Editorul de imagini Delphi.
Puteți denumi fișierul de resurse orice doriți, atâta timp cât acesta are extensia „.RES”, iar numele de fișier fără extensie nu este același cu orice nume de fișier sau unitate. Acest lucru este important, deoarece, în mod implicit, fiecare proiect Delphi care se compilează într-o aplicație are un fișier de resurse cu același nume ca fișierul de proiect, dar cu extensia „.RES”. Cel mai bine este să salvați fișierul în același director ca fișierul de proiect.
Pentru a accesa propriul nostru fișier de resurse, trebuie să-i spunem lui Delphi să conecteze fișierul nostru de resurse cu aplicația noastră. Acest lucru se realizează prin adăugarea unei directive a compilatorului la codul sursă. Această directivă trebuie să urmeze imediat forma directivă, cum ar fi următoarele:
$ R * .DFM
$ R DPABOUT.RES
Nu ștergeți accidental partea $ R * .DFM, deoarece aceasta este linia de cod care îi spune lui Delphi să se conecteze în partea vizuală a formularului. Atunci când alegeți mapele de biți pentru butoanele de viteză, Componentele de imagine sau Componentele butonului, Delphi include fișierul de hartă pe care l-ați ales ca parte a resursei formularului. Delphi izolează elementele interfeței dvs. de utilizator în fișierul .DFM.
Pentru a utiliza efectiv resursa, trebuie să efectuați câteva apeluri API Windows. Bitmap-urile, cursoarele și pictogramele stocate în fișierele RES pot fi preluate folosind funcțiile API LoadBitmap, LoadCursor, și LoadIcon respectiv.
Primul exemplu arată cum se încarcă un bitmap stocat ca o resursă și se afișează într-un TImage component.
procedură TfrMain.btnCanvasPic (Expeditor: TObject);
var bBitmap: TBitmap;
începe
bBitmap: = TBitmap.Create;
încerca
bBitmap.Handle: = LoadBitmap (hInstance, 'ATHENA');
Image1.Width: = bBitmap.Width;
Image1.Height: = bBitmap.Height;
Image1.Canvas.Draw (0,0, bBitmap);
in cele din urma
bBitmap.Free;
Sfârșit;
Sfârșit;
Notă: Dacă harta de bit care urmează să fie încărcată nu se află în fișierul de resurse, programul va fi rulat, acesta nu va afișa harta de bit. Această situație poate fi evitată prin testare pentru a vedea dacă bBitmap.Handle este zero după un apel LoadBitmap () și făcând măsurile corespunzătoare. Partea de încercare / în sfârșit în codul anterior nu rezolvă această problemă, este doar aici pentru a vă asigura că bBitmap-ul este distrus și memoria asociată este eliberată.
Un alt mod pe care îl putem folosi pentru a afișa o hârtie de bit dintr-o resursă este următorul:
procedură TfrMain.btnLoadPicClick (Expeditor: TObject);
începe
Image1.Picture.Bitmap.
LoadFromResourceName (hInstance, 'EARTH');
Sfârșit;
Screen.Cursors [] este o serie de cursoare furnizate de Delphi. Folosind fișierele de resurse, putem adăuga cursoare personalizate la proprietatea Cursor. Dacă nu dorim să înlocuim oricare dintre valorile implicite, cea mai bună strategie este să utilizăm numerele de cursor începând de la 1.
procedură TfrMain.btnUseCursorClick (Expeditor: TObject);
const NewCursor = 1;
începe
Screen.Cursors [NewCursor]: =
LoadCursor (hInstance, 'CURHAND');
Image1.Cursor: = NewCursor;
Sfârșit;
Dacă ne uităm la Delphi Project-Options-Application setări, putem găsi că Delphi furnizează pictograma implicită pentru un proiect. Această pictogramă reprezintă aplicația din Exploratorul Windows și când aplicația este minimizată. Putem modifica cu ușurință acest lucru făcând clic pe butonul „Încărcați pictograma”.
Dacă dorim, de exemplu, să animăm pictograma programului atunci când programul este minimizat, atunci următorul cod va face treaba.
Pentru animație, avem nevoie de TTimer componentă pe o formă. Codul încarcă două pictograme din fișierul de resurse într-un tablou de Ticon obiecte; acest tablou trebuie să fie declarat în partea publică a formei principale. De asemenea, vom avea nevoie NrIco, adică o variabilă de tip Integer, declarată în public parte. NrIco este utilizat pentru a urmări următoarea pictogramă de afișat.
public
nrIco: Integer;
MinIcon: tablou [0 ... 1] de TIcon;
...
procedură TfrMain.FormCreate (Expeditor: TObject);
începe
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;
Sfârșit;
...
procedură TfrMain.Timer1Timer (Expeditor: TObject);
beginif IsIconic (Application.Handle) apoi începe
NrIco: = (NrIco + 1) mod 2;
Application.Icon: = MinIcon [NrIco];
Sfârșit;
Sfârșit;
...
procedură TfrMain.FormDestroy (Expeditor: TObject);
începe
MinIcon [0] .Free;
MinIcon [1] .Free;
Sfârșit;
În Timer1.OnTimer organizatorul evenimentului, IsMinimized funcția este folosită pentru a vedea dacă trebuie să animăm pictograma principală sau nu. O modalitate mai bună de a realiza acest lucru ar fi captarea maximizării / minimizării butoanelor și a acțiunii.
Putem plasa orice (bine, nu totul) în fișierele de resurse. Acest articol v-a arătat cum puteți utiliza resurse pentru a utiliza / afișa hartă de bit, cursor sau o pictogramă în aplicația dvs. Delphi.
Notă: Când salvăm un proiect Delphi pe disc, Delphi creează automat un fișier .RES care are același nume ca proiectul (dacă nu este nimic altceva, pictograma principală a proiectului se află în interior). Deși putem modifica acest fișier de resurse, acest lucru nu este recomandabil.