Dialogová okna (2.) – seznamy, číselná pole, datum a čas, tlačítka, zaškrtávací pole

programovani.png V článku si vysvětlíme další možnosti dialogového okna. Jde např. o pole textová i číselná, dále o datum a čas, seznam, zaškrtávací pole a přednastavení hodnot, které se vyplní už při otevření okna.  

Pole dialogu

Nyní si povíme o dalších druzích polí, která můžete v dialogu použít. Přístup k jednotlivým polím je následující:

proměnná_dialogu.model.nazev_pole.typ_hodnoty (dlg.model.jmeno.text).

Pro všechny následující popisy platí, že máte dialog přiřazený do proměnné dlg a jako jmeno uvádím typ pole.

Textová pole

Tato pole jsme si probrali výše, tak jen pro zopakování.

Dlg.model.textove_pole.text

Seznam

V poli seznam si můžete předdefinovat seznam hodnot, ze kterých budete při vyvolání dialogu vybírat. Definice provedete ve vlastnostech pole v Seznamu záznamů (jednotlivé položky potvrzujete [SHIFT + ENTER]), můžete přidat i rozbalovací políčko a další drobnosti potvrzujete [SHIFT + ENTER]), můžete přidat i rozbalovací políčko a další drobnosti.

Dlg.model.seznam.text

Číselná pole

Pro číselná pole platí to samé co pro textová, navíc můžete ovlivnit minimální a maximální hodnotu a přidat šipky společně s krokováním pro posun hodnoty.

Dlg.model.ciselne_pole.value

Pole datum, čas a měna

Stejně jako u číselných, navíc ovlivníte formát data, času měny… U data můžete přidat i rozbalovací kalendář.

dlg.model.datum.date
dlg.model.cas.time
dlg.model.mena.value

Tlačítka

O tlačítkách jsme si již také něco řekli v našem příkladu.

Tlačítka jako jediná nevrací žádnou hodnotu, použijete je pro potvrzování, rušení či u více stránkových dialogů (o tom níže).

Zaškrtávací políčko

U zaškrtávacích políček platí, že pokud jsou vybrána, vrací hodnotu 1 (jinak 0). Toto použijete pro funkci IF…THEN…ELSE.

dlg.model.zaskrtavaci_policko.state

Tlačítko volby

Vrací hodnotu stejně jako zaškrtávací políčko.

Dlg.model.tlacitko_volby.state

Formátované pole

Toto pole můžete použít, pokud neznáte dopředu, jaký typ hodnoty budete zadávat. Obdoba deklarace VARIANT u proměnných.

Dlg.model.formatovane_pole.value

Konec s dialogy?

V žádném případě. Možnosti dialogů zde rozhodně nekončí. Ještě si řekneme o vícestránkových dialozích a o ovládání hodnot v polích pomocí makra.

Začneme s tím druhým a vícestránkové dialogy necháme na později.

Ovládání polí makrem

Jak připravit a vyvolat dialog, již víte. Nyní se podíváme na to, jak se dají jednotlivá pole v dialogu ovládat pomocí makra. Řekli jsme si, že pole jsou vstupy pro proměnné, dialog můžete použít i jinak. Ponechme polím jejich vstupní vlastnost a přidejme i výstup. Dialog lze naprogramovat tak, aby se přednastavily určité hodnoty. Zkuste si naprogramovat dialog na počítání spotřeby u automobilu.

Více maker pro dialog

Budete potřebovat pole pro vstup počtu ujetých kilometrů, počet litrů benzinu (nafty komu libo) a výsledné pole pro zobrazení výsledku (takto jednoduše si lze počítat spotřebu bez spojení se zápisem do dokumentu).

dim dlg as object
sub spotreba
dim km as integer, litr as integer
DialogLibraries.LoadLibrary("Standard")
dlg=createUnoDialog(DialogLibraries.Standard.Dialog2)
if dlg.execute() = 1 then
km = dlg.model.d_km.value
litr = dlg.model.d_litr.value
endif
end sub

function vypocet
vypocet = dlg.model.d_litr.value / dlg.model.d_km.value*100
dlg.model.d_spotreba.value = vypocet
end function

Toto jsou makra, která provedou vyvolání dialogu a výpočet spotřeby. Sub spotreba vyvolá dialog a předá proměnné pro další funkci vypocet, který provede samotný výpočet a vrátí jej do dialogu.

Dialog pro počítání spotřeby Dialog pro počítání spotřeby

Z tohoto příkladu je vidět, že dialog nemusí být ovládán pouze jedním makrem. Prakticky jste to provedli takto, dialog má tři číselná pole – d_km, d_litr a d_spotreba . První dvě slouží na vstup hodnot pro makro, třetí pak zobrazuje výsledek. Při tvorbě dialogu máte možnost k jednotlivým polím přiřadit makra, tzn., že každé pole může mít vlastní program.

Takže pokud si chcete nechat spočítat spotřebu, musíte si k poli přiřadit funkci vypocet. Funkci přiřaďte k druhému poli. K druhému poli proto, že po změně obsahu pole se spustí makro, které doplní výsledek do třetího pole. Pravým tlačítkem myši si zpřístupněte vlastnosti pole a na druhé záložce přiřadíte k položce Text změněn funkci vypocet. Po spuštění pak při změně textu (zadání počtu litrů) proběhne výpočet spotřeby a jeho zobrazení v dialogovém okně.

Vidíte, že již dialog nevyvoláváte. To je z toho důvodu, že dialog je zpřístupněný předchozím makrem spotreba. Jediný rozdíl je v tom, že jste dialog deklarovali mimo makro (dim dlg as object) a tímto jste zpřístupnili dialog do všech programů, které máte uloženy v tomto konkrétním modulu. Deklarovali jste objekt jako veřejnou proměnnou.

Přednastavování hodnot

Dialogy mají ještě další možnost, a tou je přednastavení určité hodnoty rovnou při otevření dialogu. Přednastavení proběhne velmi jednoduchým způsobem. Pokud víte, že postup, jak dostat hodnotu z dialogu, je:

promenna = dlg.model.textove_pole.text

tak opačný postup je již nasnadě:

dlg.model.textove_pole.text = promenna

Tímto jednoduchým způsobem si můžete pomoci tam, kde chcete mít přednastavené například původní hodnoty, s tím, že je na uživateli, zda je ponechá, či přepíše.

V příštím díle budeme pokračovat s dialogovými okny. Ukážeme si, jakým způsobem můžete přiřadit makra k jednotlivým položkám dialogu, a také se naučíte vytvořit vícestránkový dialog.

(Jako ve škole) Průměr: 1,38 | Hodnotilo: 16
 

Přidat názor

 

Nejsou podporovány žádné značky, komentáře jsou jen čistě textové. Více o diskuzích najdete v nápovědě. Diskuzi můžete sledovat pomocí RSS kanálu.

 
Daniel Sedláček

Daniel Sedláček

Amatérsky se věnuji programování maker od podzimu 2010.
Aktivní jsem na fóru od ledna 2011.
Od července 2011 spolupracuji i jako moderátor fóra.

Využívám pouze OpenOffice.org (LibreOffice nemám nainstalován).

 
 
 
woo jaw demo hz