předchozí lekce (2.12) | obsah 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 |