Archív Inet.sk Pôvodný autor: Július Pastierik
02. 11. 2006 o 00:00 3307x

Makrá v OpenOffice.org 5/VI. – Textové zoznamy 1.

Pri praktickej práci niekedy požadujeme, aby sme si mohli vyberať hodnoty z určitého preddefinovaného zoznamu. A práve na takéto typy makier sa zameriame v dnešnom pokračovaní nášho seriálu.
Makrá v OpenOffice.org 5/VI. – Textové zoznamy 1.

Určite sa už mnohí stretli s problematikou, keď si potrebovali vybrať určitú množinu údajov (napr. kalendárne mesiace), podľa ktorých chceli následne vykonať určité operácie. Preto si v dnešnom dieli ukážeme, ako si dokážeme vytvoriť jednoduchý dialóg so základnými funkciami pre presúvanie údajov z preddefinovaného zoznamu do druhého. Pravdaže, následné spracovanie vybraných údajov už záleží iba od od konkrétnych požiadavok toho-ktorého používateľa a nebudeme sa tým teraz zaoberať.

Ako prvé, čo urobíme, je pochopiteľne vlastný návrh príslušného dialógu (povedzme si ho nazveme „Dialog2“). Ten sa bude skladať z dvoch zoznamov, pričom do prvého z nich si zároveň zadefinujeme vstupné hodnoty. Tieto sa zadávajú v položke „Zoznam záznamov“, pričom musíme upozorniť na to, že pri ich zadávaní sa musí na ich oddelenie používať kombinácia kláves „Shift“+“Enter“. Ukončenie zadávania následne vykonáme zadaním obyčajnej klávesy „Enter“.

Výber zoznamuPravdaže, nemusíme používať iba tento spôsob inicializácie, a hodnoty môžeme zadať podobne, ako sme to robili pri číselných alebo textových vstupoch v príslušnom makre pred spustením vlastného dialógu.

Okrem definície záznamov si musíme do dialógu zadefinovať aj tlačidlá pre presun údajov medzi jednotlivými okienkami. Aby sme ukázali všetky možnosti presunu údajov, zadefinujeme si štyri tlačidlá, ktoré budú postupne reprezentovať možnosť presunu jedného vybraného prvku alebo všetkých prvkov zo zdrojového zoznamu do výberu a prípadné spätné vrátenie jedného prvku alebo všetkých prvkov nazad do pôvodného zdrojového zoznamu. Spätné vrátenie je určené vlastne na opravy a preto nebudeme v dialógu definovať klávesu „Cancel“.

Vloženie zdrojových dát

Pri jednotlivých tlačidlách musíme, pochopiteľne, definovať aj inicializačné procedúry, ktoré sa vykonajú po ich stlačení.

sub PresunVybrany_Initiated
 REM Procedúra pre presun vybraného prvku zo zdrojového zoznamu
 dim vstupne_pole, vystupne_pole as object

 ' Priradíme si riadenie zoznamov k dvom pomocným premenným
 vstupne_pole=dlg.getControl("Zoznam_1") ' Zdrojový zoznam
 vystupne_pole=dlg.getControl("Zoznam_2") ' Vytváraný zoznam

 if vstupne_pole.SelectedItem>0 then
  ' Ak sme vybrali nejaký prvok v zdrojovom zozname, tak ho pridáme na začiatok vytváraného zoznamu
  vystupne_pole.AddItem(vstupne_pole.SelectedItem,0)
  ' Vybraný prvok následne vymažeme zo zdrojového zoznamu
  vstupne_pole.removeItems(vstupne_pole.SelectedItemPos,1)
 end if
end sub

sub PresunVsetko_Initiated
 REM Procedúra pre presun všetkých prvkov zo zdrojového zoznamu
 dim i as integer
 dim vstupne_pole as object

 vstupne_pole=dlg.getControl("Zoznam_1")

 ' Cyklus pre všetky prvky pôvodného zoznamu
 for i=lbound(dlg.model.Zoznam_1.StringItemList()) to ubound(dlg.model.Zoznam_1.StringItemList())
  ' Vyberieme vždy prvý prvok (má index 0), pretože následným vymazaním sa zoznam posúva
  vstupne_pole.SelectItem(dlg.model.Zoznam_1.StringItemList(0),1)
  ' Prevedieme vlastný presun pomocou už naprogramovanej procedúry pre presun jedného vybraného prvku
  PresunVybrany_Initiated
 next i
end sub

sub VratVybrany_Initiated
 REM Procedúra pre vrátenie vybraného prvku do zdrojového zoznamu
 dim vstupne_pole, vystupne_pole as object

 vstupne_pole=dlg.getControl("Zoznam_1")
 vystupne_pole=dlg.getControl("Zoznam_2")

 if vystupne_pole.SelectedItem>0 then
  vstupne_pole.AddItem(vystupne_pole.SelectedItem,0)
  vystupne_pole.removeItems(vystupne_pole.SelectedItemPos,1)
 end if
end sub

sub VratVsetko_Initiated
 REM Procedúra pre vrátenie všetkých prvkov do zdrojového zoznamu
 dim i as integer
 dim vystupne_pole as object

 vystupne_pole=dlg.getControl("Zoznam_2")

 for i=lbound(dlg.model.Zoznam_2.StringItemList()) to ubound(dlg.model.Zoznam_2.StringItemList())
  vystupne_pole.SelectItem(dlg.model.Zoznam_2.StringItemList(0),1)
  VratVybrany_Initiated
 next i
end sub

Teraz si trochu vysvetlíme použité metódy, aby sme si v prípade potreby mohli naprogramovať aj makrá s inými vlastnosťami.

Metóda AddItem(vkladaný prvok, pozícia) je určená na vkladanie prvkov a má dva parametre – prvý je text, ktorý vkladáme do príslušného zoznamu a druhý je pozícia, na ktorú ho vkladáme. Pozor, pri textových poliach každá Indexácia začína od 0. Pomocou tejto metódy by sme mohli inicializovať zoznam mesiacov napr. takto:

sub Init_mesiace
 dim vstupne_pole as object

 vstupne_pole=dlg.getControl("Zoznam_1")

 ' Prvky budeme vkladať na začiatok, preto ich musíme zadať v poradí od posledného ku prvému
 vstupne_pole.AddItem("December",0)
 vstupne_pole.AddItem("November",0)
 vstupne_pole.AddItem("Október",0)
 vstupne_pole.AddItem("September",0)
 vstupne_pole.AddItem("August",0)
 vstupne_pole.AddItem("Júl",0)
 vstupne_pole.AddItem("Jún",0)
 vstupne_pole.AddItem("Máj",0)
 vstupne_pole.AddItem("Apríl",0)
 vstupne_pole.AddItem("Marec",0)
 vstupne_pole.AddItem("Február",0)
 vstupne_pole.AddItem("Január",0)
end sub

Metóda RemoveItems(pozícia prvku, počet) je určená na mazanie prvkov a má dva parametre – prvý je pozícia prvého vymazávaného prvku a druhá počet vymazávaných prvkov.

Ako ste si mohli všimnúť, zoznam všetkých prvkov nájdeme v položke StringItemList, t.j. v našom prípade dlg.model.Zoznam_1.StringItemList alebo dlg.model.Zoznam_2.StringItemList.

Spustené makro

Nakoniec si ešte uvedieme príklad makra pre vlastnú inicializáciu tohto dialógu:

sub makro_zoznam
 DialogLibraries.LoadLibrary("Standard")

 dlg=CreateUnoDialog(DialogLibraries.Standard.Dialog2)

 dlg.Execute()
 REM tu si musí každý vložiť svoje príkazy pre spracovanie vybraných prvkov zoznamu
 dlg.dispose()
end sub

Na budúce: Ďalšie vstupné polia, alebo textové zoznamy na pokračovanie.



Novinky a inšpirácie

Z nášho blogu

Prečítajte si novinky, inšpirácie a dôležité informácie zo sveta webhostingu a technológií.

Gmail končí s funkciou „Odoslať ako“ pre cudzie e-mailové adresy. Čo to znamená pre vás? Oznamy
01. 10. 2026

Gmail končí s funkciou „Odoslať ako“ pre cudzie e-mailové adresy. Čo to znamená pre vás?

Google oznámil, že v januári 2027 zruší v Gmaile funkciu „Odoslať ako“ (Send as) pre e-mailové adresy od iných poskytovateľov. Ak ste si ...

Čítať viac
Večerná „prestávka“ pre server VIP033 Oznamy
25. 09. 2026

Večerná „prestávka“ pre server VIP033

Neustále pracujeme na tom, aby vaše weby bežali hladko, rýchlo a bezpečne. Technológie idú míľovými krokmi vpred a my v Inet.sk s nimi dr...

Čítať viac
Novinky na Inet.sk (09 / 2026) Novinky
09. 09. 2026

Novinky na Inet.sk (09 / 2026)

Posledné mesiace sme v Inet.sk nevenovali len stabilite serverov, ale najmä počúvaniu vašich reálnych skúseností z každodennej praxe. Výs...

Čítať viac
Plánovaná údržba v datacentre (20.09.2026) Oznamy
07. 09. 2026

Plánovaná údržba v datacentre (20.09.2026)

Stabilita a nepretržitá dostupnosť vašich webov je pre nás kľúčová. Aby sme tento štandard nielen udržali, ale neustále zvyšovali, naši p...

Čítať viac

Podpora klientom

Máte ďalšie otázky?

Nezúfajte, pripravili sme pre Vás jednoduché odpovede na najdôležitejšie otázky, ktoré od našich klientov dostávame.

Zistiť viac

Naše výhody

Prečo si nás vybrať?

Našim klientom ponúkame až 30-dňovú záruku vrátenia peňazí.

Sme skutočný slovenský webhosting

Slovenská
firma

Nepatríme pod žiadnu nadnárodnú spoločnosť, sme malá rodinná firma.

Na nás sa môžete kedykoľvek spoľahnúť

Dlhoročné
skúsenosti

Na slovenskom trhu pôsobíme už viac ako 20 rokov, sme overená značka.

Naši prví zákazníci sú stále s nami

Spokojní
zákazníci

Naši zákazníci sú ako naša rodina, preto nám verí už viac ako 1250 klientov.

Maximálna bezpečnosť

Maximálna
bezpečnosť

Chránime Vás pred útokmi i SPAMom. U nás sú Vaše dáta v bezpečí.

Prozákaznícka podpora

Ochotná
podpora

Zakladáme si na individuálnom prístupe, preto Vám vždy radi pomôžeme.

Kvalita a dobrá cena

Férová
cena

Cena pri obnove je rovnaká ako pri objednávke. Nezdražujeme po prvom roku a bez skrytých poplatkov.

U nás sa Vám nič nestratí

Pravidelné
zálohovanie

Vaše dáta zálohujeme každý deň, dostupné sú aj zálohy z pred niekoľkých mesiacov.

Svižný Admin Panel nájdete len u nás

Prehľadný
Admin Panel

Máme rýchly a prehľadný Admin Panel, ktorý zvládne používať naozaj každý.

Správa používateľov

Správa
používateľov

Spravujte svoje projekty bez akýchkoľvek obáv s kolegami alebo externými partnermi.

Máme zľavy pre verných klientov

Vernostné
zľavy

Verní klienti u nás automaticky získavajú 15 % zľavu na každú ďalšiu objednávku.

My Vás nebudeme obmedzovať

Bez
obmedzení

Neobmedzujeme počet databáz, e-mailov, ftp a ani prenos dát.

Hosting pre WordPress

WordPress
na 1 klik

Nainštalujte si obľúbené redakčné systémy rýchlo a jednoducho.

Referencie

Spokojní zákazníci

Pozrite sa, čo o nás povedali naši klienti. Neváhajte a pridajte sa k nám ešte dnes.

Auto 100
Bystricoviny
eCall Slovakia
Filip Jančík
Frost
Merkury Broker
Mi:Su Design
Mesto Nitra
Pro Clienta
Schneider Lekáreň
Vego Marketing
Mesto Zlaté Moravce

Všetky ceny sú uvádzané bez DPH
© 2006 - 2026, Inet.sk, s. r. o., Všetky práva vyhradené

Na našej stránke používame "cookies". Vďaka nim sledujeme návštevnosť, prispôsobujeme reklamu a používateľské nastavenia, čo zlepšuje Váš zážitok z našej stránky. Súhlasíte s ich spracovaním?
Vlastné nastavenia cookies