Jak Delphi používá soubory zdrojů

Od bitmapy po ikony, kurzory až po tabulky řetězců používá každý program Windows zdroje. Zdroje jsou ty prvky programu, které podporují program, ale nejsou spustitelným kódem. V tomto článku si projdeme několik příkladů použití bitmap, ikon a kurzorů ze zdrojů.

Umístění zdrojů

Umístění prostředků do souboru .exe má dvě hlavní výhody:

  • K prostředkům lze přistupovat rychleji, protože nalezení zdroje ve spustitelném souboru zabere méně času než jeho načtení z diskového souboru.
  • Programový soubor a prostředky mohou být obsaženy v jedné jednotce (soubor .exe) bez potřeby mnoha podpůrných souborů.

Editor obrázků

Nejprve musíme vytvořit zdrojový soubor. Výchozí přípona pro soubory prostředků je.RES. Soubory zdrojů lze vytvořit pomocí editoru obrázků Delphi.

Soubor prostředků můžete pojmenovat cokoli, pokud má příponu „.RES“ a název souboru bez přípony není stejný jako název souboru nebo projektu. To je důležité, protože ve výchozím nastavení každý Projekt Delphi který zkompiluje do aplikace, má zdrojový soubor se stejným názvem jako soubor projektu, ale s příponou „.RES“. Nejlepší je uložit soubor do stejného adresáře jako soubor projektu.

instagram viewer

Včetně zdrojů v aplikacích

Abychom měli přístup k našemu vlastnímu zdrojovému souboru, musíme říct Delphi, aby náš zdrojový soubor propojil s naší aplikací. Toho je dosaženo přidáním direktivy kompilátoru do zdrojového kódu. Tato směrnice musí okamžitě následovat směrnici o podobě, jako je například tato:

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

Neodstraňujte náhodně část {$ R * .DFM}, protože to je řádek kódu, který říká Delphi, aby propojila vizuální část formuláře. Když vyberete bitmapy pro tlačítka rychlosti, komponenty obrázku nebo komponenty tlačítek, Delphi zahrnuje bitmapový soubor, který jste vybrali jako součást zdroje formuláře. Delphi izoluje prvky uživatelského rozhraní do souboru .DFM.

Chcete-li skutečně použít zdroj, musíte udělat několik Windows API hovory. Rastry, kurzory a ikony uložené v souborech RES lze získat pomocí funkcí API LoadBitmap, LoadCursor, a LoadIcon resp.

Obrázky ve zdrojích

První příklad ukazuje, jak načíst bitmapu uloženou jako prostředek a zobrazit ji v a TImage komponent.

postup TfrMain.btnCanvasPic (Odesílatel: TObject);
var bBitmap: TBitmap;
začít
bBitmap: = TBitmap. Vytvořit;
Snaž se
bBitmap. Popisovač: = LoadBitmap (hInstance, 'ATHENA');
Image1.Width: = bBitmap. Šířka;
Image1.Height: = bBitmap. Výška;
Image1.Canvas. Kreslení (0,0, bBitmap);
Konečně
bBitmap. Volný, uvolnit;
konec;
konec;

Poznámka: Pokud bitmapa, která se má načíst, není v souboru prostředků, program se bude stále spouštět, bitmapa se nezobrazí. Této situaci lze předejít testováním, zda bBitmap. Rukojeť je po volání na nulu LoadBitmap () a provedení příslušných kroků. zkuste / konečně část v předchozím kódu tento problém nevyřeší, právě zde se ujistěte, že je zničen bBitmap a je uvolněna přidružená paměť.

Jiný způsob, jak můžeme použít k zobrazení bitmapy ze zdroje, je následující:

postup TfrMain.btnLoadPicClick (Sender: TObject);
začít
Image1.Picture. Bitmapa.
LoadFromResourceName (hInstance, 'EARTH');
konec;

Kurzory ve zdrojích

Obrazovka. Kurzory [] je pole kurzorů dodávaných společností Delphi. Pomocí souborů prostředků můžeme do vlastnosti Kurzory přidat vlastní kurzory. Pokud si nepřejeme nahradit některá výchozí nastavení, nejlepší strategií je použít čísla kurzoru od 1.

postup TfrMain.btnUseCursorClick (Sender: TObject);
konst NewCursor = 1;
začít
Obrazovka. Kurzory [NewCursor]: =
LoadCursor (hInstance, 'CURHAND');
Image1.Cursor: = NewCursor;
konec;

Ikony ve zdrojích

Podíváme-li se na Delphiho Project-Options-Application nastavení, můžeme zjistit, že Delphi dodává výchozí ikonu pro projekt. Tato ikona představuje aplikaci v Průzkumníkovi Windows a při minimalizaci aplikace. Můžeme to snadno změnit kliknutím na tlačítko „Načíst ikonu“.

Pokud chceme například animovat ikonu programu, když je program minimalizován, úlohu provede následující kód.

Pro animaci potřebujeme TTimer součást na formuláři. Kód načte dvě ikony ze souboru prostředků do pole TIKON předměty; toto pole musí být deklarováno ve veřejné části hlavního formuláře. Budeme také potřebovat NrIco, to je celé číslo proměnná, deklarováno v veřejnost část. NrIco se používá pro sledování další ikony, která se má zobrazit.

veřejnost
nrIco: Celé číslo;
Minikon: pole [0..1] TIcon;
...
postup TfrMain. FormCreate (odesílatel: TObject);
začít
Minikon [0]: = TIKON. Vytvořit;
Minikon [1]: = TIKON. Vytvořit;
Minikon [0] .Handle: = LoadIcon (hInstance, 'ICOOK');
Minikon [1] .Handle: = LoadIcon (hInstance, 'ICOFOLD');
NrIco: = 0;
Timer1.Interval: = 200;
konec;
...
postup TfrMain. Timer1Timer (odesílatel: TObject);
začátek IsIconic (Aplikace. Rukojeť) pakzačít
NrIco: = (NrIco + 1) mod 2;
Aplikace. Ikona: = Minikon [NrIco];
konec;
konec;
...
postup TfrMain. FormDestroy (odesílatel: TObject);
začít
Minikon [0] .Free;
Minikon [1] .Free;
konec;

V Timer1.OnTimer obsluha události, IsMinimized Funkce slouží k tomu, abychom zjistili, zda musíme animovat naši hlavní ikonu nebo ne. Lepším způsobem, jak toho dosáhnout, by bylo zachytit tlačítka maximalizace / minimalizace a poté jednat.

Závěrečná slova

Můžeme umístit cokoli (dobře, ne všechno) do zdrojových souborů. Tento článek vám ukázal, jak používat prostředky k použití / zobrazení bitmapy, kurzoru nebo ikony v aplikaci Delphi.

Poznámka: Když uložíme projekt Delphi na disk, Delphi automaticky vytvoří jeden soubor .RES, který má stejný název jako projekt (pokud není nic jiného, ​​hlavní ikona projektu je uvnitř). Přestože můžeme tento soubor prostředků změnit, není to vhodné.