Come Delphi utilizza i file di risorse

Dalle bitmap alle icone ai cursori alle tabelle di stringhe, ogni programma Windows utilizza risorse. risorse sono quegli elementi di un programma che supportano il programma ma non sono codice eseguibile. In questo articolo, esamineremo alcuni esempi dell'uso di bitmap, icone e cursori dalle risorse.

Posizione delle risorse

Il posizionamento delle risorse nel file .exe ha due principali vantaggi:

  • È possibile accedere alle risorse più rapidamente poiché è necessario meno tempo per individuare una risorsa nel file eseguibile rispetto a quando lo carica da un file su disco.
  • Il file e le risorse del programma possono essere contenuti in una singola unità (il file .exe) senza la necessità di molti file di supporto.

L'editor di immagini

Prima di tutto, dobbiamo creare un file di risorse. L'estensione predefinita per i file di risorse è.RES. I file di risorse possono essere creati con l'editor di immagini di Delphi.

È possibile nominare il file di risorse come desiderato, purché abbia l'estensione ".RES" e il nome file senza l'estensione non è uguale a qualsiasi nome unità o progetto. Questo è importante perché, per impostazione predefinita, ciascuno

instagram viewer
Progetto Delphi che viene compilato in un'applicazione ha un file di risorse con lo stesso nome del file di progetto, ma con l'estensione ".RES". È meglio salvare il file nella stessa directory del file di progetto.

Comprese le risorse nelle applicazioni

Per accedere al nostro file di risorse, dobbiamo dire a Delphi di collegare il nostro file di risorse con la nostra applicazione. Ciò si ottiene aggiungendo una direttiva del compilatore al codice sorgente. Questa direttiva deve seguire immediatamente la direttiva sui moduli, come la seguente:

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

Non cancellare accidentalmente la parte {$ R * .DFM}, poiché questa è la riga di codice che dice a Delphi di collegarsi nella parte visiva del modulo. Quando si scelgono bitmap per pulsanti rapidi, componenti immagine o componenti pulsante, Delphi include il file bitmap scelto come parte della risorsa del modulo. Delphi isola gli elementi dell'interfaccia utente nel file .DFM.

Per utilizzare effettivamente la risorsa, è necessario fare alcuni API di Windows chiamate. Bitmap, cursori e icone memorizzati nei file RES possono essere recuperati utilizzando le funzioni API LoadBitmap, LoadCursor, e LoadIcon rispettivamente.

Immagini nelle risorse

Il primo esempio mostra come caricare una bitmap memorizzata come risorsa e visualizzarla in a TImage componente.

procedura TfrMain.btnCanvasPic (Mittente: TObject);
var bBitmap: TBitmap;
inizio
bBitmap: = TBitmap. Creare;
provare
bBitmap. Handle: = LoadBitmap (hInstance, 'ATHENA');
Image1.Width: = bBitmap. Larghezza;
Image1.Height: = bBitmap. Altezza;
Image1.Canvas. Draw (0,0, bBitmap);
infine
bBitmap. Gratuito;
fine;
fine;

Nota: se la bitmap che deve essere caricata non si trova nel file di risorse, il programma verrà comunque eseguito, semplicemente non visualizzerà la bitmap. Questa situazione può essere evitata testando per vedere se il bBitmap. Maniglia è zero dopo una chiamata a LoadBitmap () e prendendo le misure appropriate. Il try / finally parte del codice precedente non risolve questo problema, è qui solo per assicurarsi che bBitmap sia distrutto e che la sua memoria associata sia liberata.

Un altro modo in cui possiamo usare per visualizzare una bitmap da una risorsa è il seguente:

procedura TfrMain.btnLoadPicClick (Mittente: TObject);
inizio
Image1.Picture. Bitmap.
LoadFromResourceName (hInstance, 'EARTH');
fine;

Cursori nelle risorse

Schermo. Cursori [] è un Vettore dei cursori forniti da Delphi. Usando i file di risorse, possiamo aggiungere cursori personalizzati alla proprietà Cursori. A meno che non desideriamo sostituire i valori predefiniti, la strategia migliore è utilizzare i numeri di cursore a partire da 1.

procedura TfrMain.btnUseCursorClick (Sender: TObject);
const NewCursor = 1;
inizio
Schermo. Cursori [NewCursor]: =
LoadCursor (hInstance, 'CURHAND');
Image1.Cursor: = NewCursor;
fine;

Icone nelle risorse

Se guardiamo Delphi's Project-Opzioni-Application impostazioni, possiamo scoprire che Delphi fornisce l'icona predefinita per un progetto. Questa icona rappresenta l'applicazione in Esplora risorse e quando l'applicazione è ridotta a icona. Possiamo facilmente cambiarlo facendo clic sul pulsante "Carica icona".

Se vogliamo, ad esempio, animare l'icona del programma quando il programma è ridotto a icona, allora il codice seguente farà il lavoro.

Per l'animazione, abbiamo bisogno di a TTimer componente in un modulo. Il codice carica due icone dal file di risorse in un array di Ticon oggetti; questo array deve essere dichiarato nella parte pubblica del modulo principale. Ne avremo anche bisogno Nrico, questo è un tipo intero variabile, dichiarato nel pubblico parte. Il Nrico viene utilizzato per tenere traccia dell'icona successiva da mostrare.

pubblico
nrIco: intero;
MinIcon: array [0..1] di TIcon;
...
procedura TfrMain. FormCreate (Mittente: TObject);
inizio
Minicon [0]: = Ticon. Creare;
Minicon [1]: = Ticon. Creare;
MinIcon [0] .Handle: = LoadIcon (hInstance, 'ICOOK');
MinIcon [1] .Handle: = LoadIcon (hInstance, 'ICOFOLD');
Nrico: = 0;
Timer1.Interval: = 200;
fine;
...
procedura TfrMain. Timer1Timer (Mittente: TObject);
beginif IsIconic (Applicazione. Maniglia) poiinizio
Nrico: = (Nrico + 1) mod 2;
Applicazione. Icon: = Minicon [Nrico];
fine;
fine;
...
procedura TfrMain. FormDestroy (Mittente: TObject);
inizio
Minicon [0] .Trasporto;
Minicon [1] .Trasporto;
fine;

Nel Timer1.OnTimer gestore di eventi, IsMinimized La funzione viene utilizzata per vedere se è necessario animare o meno la nostra icona principale. Un modo migliore per raggiungere questo obiettivo sarebbe quello di catturare i pulsanti massimizza / minimizza e di agire.

Parole finali

Possiamo mettere qualsiasi cosa (bene, non tutto) nei file di risorse. Questo articolo ti ha mostrato come utilizzare le risorse per utilizzare / visualizzare bitmap, cursore o un'icona nell'applicazione Delphi.

Nota: quando salviamo un progetto Delphi sul disco, Delphi crea automaticamente un file .RES che ha lo stesso nome del progetto (se non altro, è presente l'icona principale del progetto). Sebbene sia possibile modificare questo file di risorse, questo non è consigliabile.

instagram story viewer