Lekce 2.13
Použití externího formuláře


předchozí lekce (2.12) obsah kurzu

V předchozích lekcích jsme si ukázali základní možnosti práce s formuláři. Součástí aplikace však byl vždy pouze jeden formulář. To nemusí vadit u jednoduchých aplikací, většinou však bude výhodné mít možnost používat v aplikaci více formulářů. Stejně tak vás bude asi zajímat, jak je to s využitím externích programů, které jsme se naučili používat na konci první části kurzu. Vše si vysvětlíme a ukážeme v této lekci kurzu.

Pokud budete potřebovat používat externí programy, ve kterých máte vícekrát se opakující procedury a funkce, je jejich použití stejné, jako když je používáte z programu bez formuláře. Nejprve si proto požadovaný program načtěte do projektu. To se provede volbou z menu Soubor/Přidat do projektu. Dále musíte do hlavního programu, ze kterého budete volat procedury umístěné v externím programu doplnit definici používaného externího programu. Přesvěčte se, že máte v editoru aktivován hlavní program a zvolte z menu volbu Soubor/Definovat modul a vyberte v zobrazeném dialogu program, se kterým má hlavní program spolupracovat (bude mít možnost používat jeho procedury a funkce). Uvedeným postupem bude do seznamu používaných modulů doplněn zadaný externí program. V jazyce KLONDAIK je to v sekci Implementation, v jazyce BONANZA a JUKON je to na začátku programu za označením //USEUNIT.

Použití dalšího formuláře v programu je obdobné, jako použití externího programu. Další formulář doplníte do aplikace (projektu) volbou z menu Soubor/Nový, kdy vyberete na záložce Formulář ikonu s formulářem v používaném jazyku. Vytvoří se prázdný formulář včetně odpovídajícího programu. Doporučuje se ihned přejmenovat formulář podle jeho obsahu. Pokud byste měli totiž v aplikaci formuláře se stejným jménem, nedokázal by systém rozhodnout, se kterým formulářem chcete pracovat. Stejně tak se doporučuje program ihned uložit a zadat mu tím jeho jméno.

Pokud aplikaci s několika formuláři spustíte, zobrazí se pouze první (hlavní) formulář. Aby mohly být zobrazeny i další formuláře, je nutné je zadat jako externí moduly. To provede stejně, jako se zadávají externí programy. Aktivujte proto v editoru hlavní program a zvolte z menu akci Soubor/Definovat modul. Vyberte v dialogovém okně požadovaný program, který se tím doplní mezi seznam používaných modulů. V jazyce KLONDAIK je to v sekci Implementation, v jazyce BONANZA a JUKON je to na začátku programu za označením //USEUNIT.

Standardně se po spuštění aplikace zobrazuje pouze hlavní formulář. Ostatní formuláře je možné zobrazit voláním metody Show, případně ShowModal. Pokud požadujete zobrazit okamžitě při spuštění aplikace i externí formulář, musíte pro něj nastavit buď v okně nastavení objektu změnit vlastnost na True, případně nastavit uvedenou vlastnost v ošetření události OnCreate.

Pro zobrazení formuláře, který máte definován jako externí modul a požadujete jeho nemodální zobrazení, musíte použít z hlavního programu metodu Show. Nemodální zobrazení znamená, že je možné se mezi formuláři přepínat. Pro modální zobrazení musíte vyvolat metodu ShowModal, při kterém není možné se přepnout na jiný formulář bez jeho ukončení. Modální zobrazení používají například dialogové boxy. Následující ukázka zobrazí po kliknutí na tlačítko modálně externí formulář. V takovém případě je vhodné si kontrolovat, zda není formulář již zobrazen. Pokud ano, došlo by při pokusu o modální zobrazení k chybě.


Jazyk KLONDAIK: procedure TForm1.Button2Click(Sender: TObject); begin if Form2.Visible = False then Form2.ShowModal; end;

Jazyk BONANZA: sub Button2Click(Sender) if Form2.Visible = False then Form2.ShowModal end sub

Jazyk JUKON: function Button2Click(Sender) { if (Form2.Visible == False) Form2.ShowModal; }

Ukázku použití práce s externím formulářem naleznete v projektu ExtForm, který je sestaven pro všechny podporované jazyky. S externě definovaným formulářem je možné provádět spoustu akcí. Při požadavku na změnu vlastnosti formuláře musíte uvést před jménem vlastnosti jméno formuláře oddělené tečkou. Stejně tak je možné nastavit i vlastnosti dalších objektů umístěných na formuláři. Vlastnosti objektů je samozřejmě možné i uvedeným způsobem i číst. Při uvedení jména formuláře a objektu je možné také aktivovat metodu objektu na jiném formuláři. Některé ukázky možné práce s externími formuláři jsou uvedeny v následujících příkladech:

Jazyk KLONDAIK: Form2.Button1.Caption := 'XXXXXXX'; ShowMessage('Width 2:='+IntToStr(Form2.Width)); Form2.Button1.Click; Form2.Close;

Jazyk BONANZA: Form2.Button1.Caption = "XXXXXXX" ShowMessage("Width:="+IntToStr(Form2.Width)) Form2.Button1.Click Form2.Close

Jazyk JUKON: Form2.Button1.Caption = "XXXXXXX" ShowMessage("Width :="+IntToStr(Form2.Width)); Form2.Button1.Click; Form2.Close;

Pokud používáte v aplikaci více formulářů, je nutné se seznámit s tím, kdy jsou které události formuláře vyvolány. Inicializační část programu formuláře je uvedena v ošetření události OnCreate. Ta se proto provede pouze jednou a to ihned po spuštění naprogramované aplikace bez ohledu na to, zda je formulář současně zobrazen (vlastnost Form.Visible). Pokud proto požadujete provést některé akce až v okamžiku zobrazení formuláře, je nutné použít jiné události. Událost OnShow je provedena při prvním vykreslení formuláře, pokud nebyl předtím viditelný. Událost OnActivate je však prováděna vždy při přepnutí na formulář, který nebyl přitom aktivní, ačkoliv mohl být viditelný. Proto není pro zvažované použití tato událost vhodná.
předchozí lekce (2.12) obsah kurzu

OZOGAN, 1 Máje 97, 460 01 Liberec
tel.,fax: (048) 52 28 338, e-mail: info@ozogan.cz