Tipy a triky v Delphi, díl 172. – formulář v DLL knihovně

Do třetice si budeme povídat o DLL knihovnách a tentokrát si do ní uložíme rovnou celý formulář. Postup je opět velmi jednoduchý.

Samozřejmě i tentokrát začneme nejprve knihovnou. Stejně jako v minulém a předminulém dílu založíme nový projekt typu DLL knihovna. Poté opět přes menu File -> New -> Form vložíme do projektu nový formulář, který ihned uložíme a následně přes menu Project -> Add to Project přidáme formulář do projektu DLL knihovny.

Nyní můžeme vložený formulář libovolně vizuálně upravit dle libosti a potřeby. Můžeme přidat další komponenty, vložit vlastní funkce a kódy událostí, zkrátka cokoliv vás napadne. Máme-li formulář připraven, není to ještě vše. Musíme do kódu projektu knihovny přidat funkce pro zobrazení formuláře, neboť jinak by nebylo možné zobrazit formulář z externí aplikace. Přesněji řečeno to bude jedna procedura, která slouží k běžnému zobrazení formuláře, a jedna funkce, která se postará o modální zobrazení (její návratovou hodnotou je modal result). Funkci i proceduru pak přidáme do seznamu externě dostupných funkcí knihovny. Kód projektu pak vypadá takto:

library Project1;

uses
  SysUtils,
  Classes,
  Unit1 in `Unit1.pas` {Form1}

{$R *.res}

procedure ShowF; stdcall;
begin
  Form1 := TForm1.Create(nil);
  Form1.Show;
end;

function ShowFModal:integer; stdcall;
begin
  Form1 := TForm1.Create(nil);
  Result := Form1.ShowModal;
end;

Exports ShowF, ShowFModal;

begin

end.

Direktiva stdcall, kterou nalezneme u názvu funkce i procedury, patří mezi tzv. volací konvence, kterých je několik druhů a rozhodují o způsobu předávání parametrů (jejich pořadí). Detaily a další možnosti (jako např. register, safecall apod.) naleznete v nápovědě Delphi.

Nesmíme zapomenout na jednu věc a tou je řádné ukončení (resp. destrukce) formuláře po jeho uzavření a tím správné uvolnění zdrojů. Využijeme k tomu událost OnClose formuláře, kde nastavíme TOnCloseAction na hodnotu caFree, která uvolní paměť. Kód události pak bude vypadat takto:

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action := caFree;
end;

Tím je knihovna hotová a zbývá nám jen kompilace, abychom získali výsledný DLL soubor. Ten pak použijeme v ukázkové aplikaci. Založíme nový projekt, do dané složky zkopírujeme naši DLL knihovnu a na formulář umístíme pouze dvě tlačítka. První bude volat funkci knihovny pro tradiční zobrazení formuláře, druhé tlačítko pak pro modální zobrazení. Důležitá je ovšem deklarační část unitu formuláře, kde musíme nadefinovat příslušnou proceduru a funkci, které pak budeme v událostech OnClick zmiňovaných tlačítek volat. V této deklaraci si zvolíme vhodný název a uvedeme, že se funkce nachází v externím zdroji, který je opět definován názvem DLL knihovny a tentokrát i názvem funkce. Tyto dva deklarační řádky pak mohou vypadat jednoduše takto:

.
.
procedure ShowForm; stdcall; external `Project1.dll` name `ShowF`;
function ShowFormModal:integer; stdcall; external `Project1.dll` name `ShowFModal`;
.
.

Tím je vlastně dnešní příklad hotov. A využití? Představte si, že máme aplikaci a z menu voláme její funkce. Ty se pak otvírají v dalších oknech. Pokud tato okna (včetně příslušných funkcí, samozřejmě) uložíme do DLL knihovny, umožní nám to velmi elegantní aktualizaci naší aplikace, kdy stačí vyměnit pouze příslušnou knihovnu. Navíc můžeme funkce aplikace rozdělit do pomyslných "plug-inů" a aktualizovat pak pouze jednotlivé části aplikace zvlášť. To je pochopitelně jen nástin nabízejících se možností.

I tentokrát si můžete kompletní zdrojové kódy ukázkové aplikace i samotné knihovny stáhnout zde.

Diskuze (10) Další článek: Sophos rozšíří své produkty o firewall

Témata článku: Software, Programování, Běžné zobrazení, Knihovna, DLL, Výsledné dílo, Trik, Díl, Pace, Formulář


Určitě si přečtěte

V doupěti hackerů na brněnské FIT: Ukázali nám útoky na Bluetooth i vlastní chytré krabičky

V doupěti hackerů na brněnské FIT: Ukázali nám útoky na Bluetooth i vlastní chytré krabičky

** Internet je plný malwaru, to už dnes ví každý ** Víte ale, že lze útočit třeba i na Bluetooth? ** Navštívil jsem hackery z brněnského FITu

Jakub Čížek | 1

Kde se bere elektřina v zásuvce? Poznejte 10 tajemství venkovních stožárů s dráty

Kde se bere elektřina v zásuvce? Poznejte 10 tajemství venkovních stožárů s dráty

Elektřina se vyrábí v elektrárnách, ale do zásuvek v našich domovech to pak má ještě hodně daleko. Dnes se na tuhle dlouhou cestu podíváme.

David Polesný | 81

Praktické vychytávky, které si chcete doinstalovat do Windows

Praktické vychytávky, které si chcete doinstalovat do Windows

** Pokud vás nudí vzhled nabídky Start, snadno jej můžete změnit. ** Stejně tak existují programy na přidání záložek do programů. ** Spokojit se ani nemusíte se základním ovládáním hlasitosti.

Vladislav Kluska | 45

Tohle tak jednou zažít: Nová vzducholoď Airlander 10 s prosklenou podlahou

Tohle tak jednou zažít: Nová vzducholoď Airlander 10 s prosklenou podlahou

** Airlander 10 nabídne plavby vzduchem v interiéru s prosklenou podlahou ** Luxusní vzducholoď byla původně vyvíjena pro vojenské účely ** Počítá se s třídenními „kochacími“ výlety za poznáním

Karel Kilián | 7

Jak a proč používat alternativní DNS: Zrychlí internet a odblokuje weby

Jak a proč používat alternativní DNS: Zrychlí internet a odblokuje weby

** Alternativní DNS servery mohou zpříjemnit surfování na internetu ** Existuje několik ověřených alternativ, nejen známé DNS od Googlu ** Alternativní DNS však mají i své nevýhody, pozor na ně

Petr Březina | 33

Xiaomi Yeelight: Wi-Fi LED žárovka za pár stovek, kterou můžete ovládat i hlasem

Xiaomi Yeelight: Wi-Fi LED žárovka za pár stovek, kterou můžete ovládat i hlasem

** Na eBayi aspol. ji koupíte za čtyři stovky ** Má Wi-Fi a povedenou appku ** Spojíte ji s Googlem, Amazonem, IFTTT i vlastním systémem

Jakub Čížek | 42

Externí SSD se může hodit. Je rychlé, malé zvenku, velké uvnitř a cena už se snese

Externí SSD se může hodit. Je rychlé, malé zvenku, velké uvnitř a cena už se snese

** Vyzkoušeli jsme rychlé externí SSD Samsung T5 ** Externí SSD je lepší než flešky i velké plotnové disky, většímu rozšíření doposud bránila především cena ** Samsung T5 zvládne i chytré šifrování a připojení k mobilu

David Polesný | 27


Aktuální číslo časopisu Computer

Megatest: 13 grafických karet

Srovnání 7 dokovacích stanic s USB-C

Jak na perfektní noční fotografie

Kvalitní zdroje informací pro sebevzdělávání