Doteraz sme písali makrá, ktoré bežali priamo bez akéhokoľvek interaktívneho zásahu používateľa. Ale napr. už pri nezalomiteľných medzerách (Makrá v OpenOffice. org 2/III. – nezalomiteľná medzera) sme spomínali rôzne výklady typografických pravidiel v oblasti spojky „a“. Túto problematiku sme doteraz riešili tak, že sme nechali na každého používateľa, nech si upraví makro podľa seba. Takéto riešenie však nemusí byť postačujúce, pretože ak chceme napr. vo väčších podnikoch toto makro nasadiť každému používateľovi, pričom každý má svoje predstavy o tomto probléme, museli by sme mať dve rozdielne verzie.
Preto musíme do našich makier pridať možnosť interaktívneho zadania niektorých údajov. Pochopiteľne, teraz vzniká otázka, aké prostriedky nám v tomto smere ponúka OpenOffice. org. Je ich pomerne dosť a môžeme ich v zásade rozdeliť do troch skupín – správy, vstupné funkcie a dialógy. V nasledujúcich dieloch si ich postupne preberieme a ukážeme ich možnosti.
Správy
Už pri prvých makrách (Makrá v OpenOffice. org IV. – vymazávanie medzier) sme spomínali, že systémová funkcia „msgbox“ má tri parametre, pričom prvý je vypisovaný reťazec, druhý určuje aké tlačidlá sa majú zobraziť a tretí je názov tohto okna. Teraz sa pristavíme práve pri druhom parametri – definícii tlačidiel, pretože sme zatiaľ používali iba hodnotu 0, pri ktorej sa zobrazovalo jedno jediné tlačidlo „OK“. funkcia „msgbox“ však v tomto smere ponúka omnoho viac možností.
Pochopiteľne, vzniká otázka, aký význam má možnosť zobrazenia viacerých tlačidiel. Táto otázka má jednoduchú odpoveď – „msgbox“ je vlastne funkcia, ktorá vracia ako návratovú hodnotu kódované číslo stlačeného tlačidla. Samozrejme, pokiaľ sme zobrazovali jedno jediné tlačidlo „OK“, nemali sme inú možnosť, ako ho na koniec stlačiť a preto nás návratová hodnota ani nemohla zaujímať.
Pozrime sa však na to, aké hodnoty môže tento parameter nadobúdať a aké tlačidlá sa pri tom vlastne zobrazujú. Aby sme sa vyhli prípadným rozdielom medzi jazykovými verziami a prekladmi, budeme uvádzať ich originálny anglický názov s tým, že v zátvorke uvedieme aj slovenský preklad. Základné možnosti sú nasledovné:
0 – zobrazuje sa tlačidlo „OK“
1 – zobrazujú sa tlačidlá „OK“ a „Cancel“ („OK“ a „Zrušiť“)
2 – zobrazujú sa tlačidlá „Abort“, „Retry“ a „Ignore“ („Prerušiť“, „Skúsiť znovu“ a „Ignorovať“)
3 – zobrazujú sa tlačidlá „Yes“, „No“ a „Cancel“ („Áno“, „Nie“ a „Zrušiť“)
4 – zobrazujú sa tlačidlá „Yes“ a „No“ („Áno“ a „Nie“)
5 – zobrazujú sa tlačidlá „Retry“ a „Cancel“ („Skúsiť znovu“ a „Zrušiť“)
Ďalej pomocou tohto istého parametra môžeme určiť, ktoré tlačidlo bude definovať štandardnú návratovú hodnotu (t. j. ak po zobrazení správy hneď stlačíme klávesu „Enter“, ktorú hodnotu vlastne zadáme):
0 – štandardnú hodnotu definuje prvé tlačidlo
256 – štandardnú hodnotu definuje druhé tlačidlo
512 – štandardnú hodnotu definuje tretie tlačidlo
Uvedené hodnoty musíme pripočítať k číslu, pomocou ktorých zobrazujeme požadované tlačidlá, takže napr. pomocou hodnoty 258 (2+256) zobrazíme trojicu tlačidiel „Abort“, „Retry“ a „Ignore“ s tým, že druhé tlačidlo je prednastavené ako štandardné:
msgbox("Štandardné je druhé tlačidlo (256)", 258,"Nastavovanie tlačidiel")
Ako posledné, čo môžeme pomocou tohto parametra nastaviť, je obrázkový informačný symbol, ktorý sa zobrazí v ľavej hornej časti okna:
0 – nezobrazí sa žiadny informačný symbol
16 – zobrazí sa informačný symbol „Stop“
32 – zobrazí sa informačný symbol „Otázka“
48 – zobrazí sa informačný symbol „Výstraha“
64 – zobrazí sa informačný symbol „Oznam“
Uvedené hodnoty znovu musíme pripočítať k už pripravenému číslu, pomocou ktorého nastavujeme tlačidlá, takže napr. pomocou hodnoty 290 (2+256+32) zobrazíme trojicu tlačidiel „Abort“, „Retry“ a „Ignore“ s tým, že druhé tlačidlo je prednastavené ako štandardné a ako informačný symbol budeme mať otáznik:
msgbox("Nastavovací parameter 290 (2+256+32)", 290,"Nastavovanie tlačidiel")
Na tomto mieste ešte musíme upozorniť na zvláštny charakter symbolu „Oznam“, pretože pokiaľ ho použijeme, ostatné nastavenia tohto parametra sú ignorované a vždy sa zobrazí iba tlačidlo „OK“, t. j. je úplne jedno, či zadáme hodnotu 64, 65, 66…
Zobrazenie príslušných tlačidiel však nemá praktický význam, ak sa nedozvieme, ktoré tlačidlo bolo stlačené. Ako sme však už naznačili, funkcia „msgbox“ vracia kódované číslo stlačeného tlačidla podľa nasledujúceho zoznamu:
1 – bolo stlačené tlačidlo „OK“
2 – bolo stlačené tlačidlo „Cancel“
3 – bolo stlačené tlačidlo „Abort“
4 – bolo stlačené tlačidlo „Retry“
5 – bolo stlačené tlačidlo „Ignore“
6 – bolo stlačené tlačidlo „Yes“
7 – bolo stlačené tlačidlo „No“
dim tlacidlo as integer
tlacidlo=msgbox("Čo mám urobiť?", 290,"Otázka na používateľa")
if tlacidlo=3 then
' prerušiť
elseif tlacidlo=4 then
' skúsiť znovu
else
' ignorovať
end if
Ako vidíme, pomocou správ môžeme veľmi jednoducho riadiť niektoré makrá, napríklad už spomínané nezalomiteľné medzery za spojkami „a“. O tom si však budeme hovoriť až nabudúce.
Na budúce: Riadime medzery za spojkou „a“, alebo ako správy využijeme v praxi.