Makrá v OpenOffice.org 5/II. – Rozdeľujeme dialóg na stránky

Július Pastierik  /  14. 09. 2006, 00:00

V dnešnom dieli seriálu o programovaní makier v OpenOffice.org si ukážeme praktickú ukážku dvojstránkového dialógu pre nastavovanie parametrov pri vkladaní nezalomiteľných medzier za jednoznakové predložky a spojky.

Ako sme si už naznačili v minulom dieli, dnes si ukážeme, ako sa prakticky programujú podprogramy pre prepínanie medzi jednotlivými oknami viacstránkových dialógov. Aby sme nemuseli vymýšľať nový príklad, rozdelíme si dialóg, ktorý sme si vytvorili pre nastavovanie parametrov pri vkladaní nezalomiteľných medzier za jednoznakové predložky a spojky.

Ako si určite dobre pamätáte, tento dialóg sa skladal z dvoch zaškrtávacích okienok (či sa má má vkladanie nezalomiteľných medzier spúšťať automaticky pri spustení OpenOffice.org a či sa má nezalomiteľná medzera vkladať aj za spojku „a“) a dvoch prepínacích políčok, pomocou ktorých sme určovali, aký znak sa má za spojky vkladať („Non Break Space“ alebo „Word Joiner“).

Prvá stránka dialógu

Teraz si ukážeme postup, ako tento dialóg rozdelíme do dvoch stránok. Ako prvé, čo urobíme, bude to, že si v návrhovej časti dialógov označíme celý dialóg a zmeníme jeho číslo stránky (krok) na 1. Teraz vo vnútri dialógu označíme postupne zaškrtávacie okienka a tak isto zmeníme túto položku u nich na číslo stránky na hodnotu jedna.

V druhom kroku znovu označíme celý dialóg a zmeníme číslo stránky na 2. Teraz vo vnútri dialógu označíme postupne prepínacie políčka a zmeníme aj ich čísla stránok na hodnotu dva. Keď teraz budeme prepínať medzi jednotlivými stránkami uvidíme, že nám tam zostali iba príslušné políčka a tlačidlá „OK“ a „Cancel“. Aby sme však mohli medzi nimi prepínať aj po spustení dialógu, musíme si pridať aspoň jedno tlačidlo, pomocou ktorého to budeme realizovať. Nazveme ho „zmena_strany“, musíme mu priradiť číslo strany 0 a ako zobrazovaný text zadáme šípku „->“. Nakoniec si ešte upravíme vzhľad jednotlivých stránok tak, aby nám viac vyhovoval – napr. tým, že namiesto toho, aby sme mali políčka pod sebou, umiestnime ich vedľa seba.

Priradenie makra k tlačidlu

V tomto kroku sme dospeli k najdôležitejšej časti – tlačidlu „zmena_strany“ musíme priradiť makro, pomocou ktorého vlastne budeme jednotlivé stránky prepínať. Pretože máme iba dve stránky, bude nám stačiť pomerne jednoduchá procedúra, kde stačí tieto stránky vymieňať. Zároveň však bude vhodné, ak budeme meniť aj zobrazovanú šípku (text) v tlačidle „zmena_strany“ z „->“ na „<-“ a naopak. Príslušná procedúra môže potom vyzerať napr. takto:

rem Prepínanie medzi dvoma stranami dialógu
sub zmena_strany_Initiated
 if dlg.model.step=1 then
  ' Ak sme na strane 1, prepneme sa na stranu 2
  dlg.model.step=2 ' týmto priradením sa automaticky zobrazila 2 strana dialógu
  dlg.model.zmena_strany.enabled=true ' povolíme platnosť tlačidla „zmena_strany“
  dlg.model.zmena_strany.label="<-" ' a zmeníme jeho popis
 else
  ' Ak sme na strane 2, prepneme sa na stranu 1
  dlg.model.step=1
  dlg.model.zmena_strany.enabled=true
  dlg.model.zmena_strany.label="->"
 end if
end sub


Priradené makro k inicializácii tlačidla

Teraz túto procedúru priradíme ku tlačidlu „zmena_strany“. V návrhu dialógu sa v zobrazených vlastnostiach tohto tlačidla prepneme do druhej záložky „Udalosti“, kde stlačením prvého tlačidla „…“ vyberieme položku „Pri inicializácii“. Tam následne pomocou tlačidla „Priradiť“ vyhľadáme a priradíme túto procedúru k označenému tlačidlu.

Prvá strana spusteného dialógu

Teraz nám ešte zostáva trochu upraviť ostatné funkcie, ktoré sme používali pri práci s týmto dialógom. Ako prvé je nutné, aby sme premennú dlg definovali ako globálnu, pretože inak ju nebude pred chvíľou definovaná procedúra poznať a pri priraďovaní makier k tlačidlám nemáme možnosť definovať parametre funkcie.

Druhá strana spusteného dialógu

Okrem toho je potrebné, aby sme pri inicializácii dialógu nastavili aj stranu dialógu, ktorá sa má zobraziť ako prvá a pretože nevieme, aký sme mali posledne zobrazovaný text tlačidla „zmena_strany“, tak aj túto položku. Ostatné časti sa nemusia meniť, pretože umiestnením nejakej položky na inú stranu dialógu sa nemenia jej ostatné vlastnosti. Vlastné makrá potom môžu vyzerať nasledovne (uvádzame iba zmenené procedúry):

global dlg as object

sub init_dialog_predlozky(oDialog as object)
 Citaj_nastavenie_predlozky
 oDialog.model.Automaticky.State=Priznaky_nezalomitelne_medzery(1)
 oDialog.model.Za_spojku_a.State=Priznaky_nezalomitelne_medzery(2)
 oDialog.model.TabIndex=3
 oDialog.model.TabIndex=4
 select case Priznaky_nezalomitelne_medzery(3)
  case 2
   oDialog.model.Volba1.State=0
   oDialog.model.Volba2.State=1
  case else
   oDialog.model.Volba1.State=1
   oDialog.model.Volba2.State=0
 end select
 oDialog.model.step=1 ' Ako prvú zobrazíme stranu 1
 oDialog.model.zmena_strany.enabled=true ' Povolíme prepínanie na stranu 2
 oDialog.model.zmena_strany.label="->" ' A zobrazíme text – šípku – naznačujúcu smer dopredu na ďalšiu stranu
end sub

sub NastavPriznakyNezalomitelnePredlozky

 DialogLibraries.LoadLibrary("Vlastne_makra")

 dlg=CreateUnoDialog(DialogLibraries.Vlastne_makra.Dialog_Nezalomitelne_Predlozky)
 init_dialog_predlozky(dlg)

 if dlg.Execute()=1 then
  zapis_dialog_predlozky(dlg)
 endif
 dlg.dispose()
end sub


Na budúce: Ďalšie možnosti dialógov, alebo nie všetko sa dá riešiť zaškrtávacími a prepínacími políčkami.


Neprehliadnite: