Makrá v OpenOffice.org 5/VII. – Textové zoznamy 2

Július Pastierik  /  06. 12. 2006, 00:00

V dnešnom dieli seriálu o programovaní makier v OpenOffice.org dokončíme problematiku vstupných textových zoznamov v dialógoch.

V minulom dieli nášho seriálu sme si ukázali, ako dokážeme vyberať prvky z jedného zoznamu a v prípade potreby ich prenášať do druhého a naspäť. Dnes budeme pokračovať v tejto problematike a ukážeme si výber hodnoty z rozbaľovacieho zoznamu.

Možnosti, kde sa dajú používať preddefinované zoznamy určite nemusíme pripomínať, pretože tí, ktorí sa so zoznamami stretávajú už určite vidia ich praktické použitie. Z praktického hľadiska sa nám niekedy namiesto obyčajného zoznamu hodí tzv. kombinovaný zoznam, alebo lepšie povedané kombinovaný rozbaľovací zoznam (známy aj pod názvom „Combo box“). Tento sa líši oproti bežného zoznamu nielen tým, že v zabalenom tvare je zobrazený iba jeden záznam, ale najmä tým, že na výstupe nám vráti vždy práve jednu hodnotu, a to aj vtedy, ak si žiadnu nevyberieme – vtedy vráti základnú hodnotu, ktorú máme definovanú vlastne mimo tento zoznam – preto hovoríme o tzv. kombinovanom zozname.

Combo box

Pozrime sa však na to, ako sa takýto zoznam definuje. Je to veľmi podobné, ako keď sme minule definovali obyčajný zoznam – jednotlivé záznamy zadávame v jeho vlastnostiach do položky „Zoznam záznamov“ s tým, že ich musíme oddeľovať kombináciou kláves „Shift“+“Enter“, pretože zadávanie sa ukončuje klávesou „Enter“. Okrem toho, pravdaže, môžeme tento záznam definovať aj programovo pomocou metódy „AddItem“, ktorú sme si popisovali už minule, napr.:

dim vstupne_pole as object

REM Predpokladajme, že máme definovaný rozbaľovací zoznam s názvom „Zoznam“
vstupne_pole=dlg.getControl("Zoznam")
vstupne_pole.AddItem("náš text",0)

Ako sme spomínali, v rozbaľovacom zozname máme aj jednu štandardnú hodnotu, ktorú sa nám vráti v prípade, že nevyberieme žiadnu inú položku zo zoznamu. Túto hodnotu definujeme vo vlastnostiach zoznamu hneď za jeho názvom v položke „Text“. Výstupnú hodnotu získame nakoniec takisto cez hodnotu text:

dlg.model.Zoznam.Text
Vlastnú inicializáciu dialógu vrátane následného získania vybranej hodnoty pre ďalšie spracovanie môžeme nakoniec urobiť napr. pomocou takejto jednoduchej funkcie:

function Daj_polozku_zoznamu
 DialogLibraries.LoadLibrary("Standard")
 dim co as string

 dlg=CreateUnoDialog(DialogLibraries.Standard.Dialog2)

 dlg.Execute()
 co=dlg.model.Zoznam.Text
 dlg.dispose()
 Daj_polozku_zoznamu=co
end function

Makro s Combo boxomNa budúce: Ďalšie vstupné polia, alebo ako zadávať dátum, čas či názov súboru.


Neprehliadnite: