Archív Inet.sk Pôvodný autor: Július Pastierik
21. 02. 2007 o 00:00 2665x

Makrá v OpenOffice.org 5/XI. – Formátovanie dokumentu 3

V ďalšom pokračovaní nášho seriálu o programovaní makier si ukážeme, ako sa dá vytvoriť dialóg s príslušnými makrami pre ukladanie nastavení do rôznych profilov.
Makrá v OpenOffice.org 5/XI. – Formátovanie dokumentu 3

V minulom dieli sme si ukázali, ako je možné ukladať súbory do adresárov, ktoré sú závislé od používateľa počítača. Dnes tieto služby využijeme naplno a rozšírime ich ešte o možnosť vytvárania vlastných používateľských profilov.

Na tento účel si zadefinujeme ďalší dialóg,ktorý nazveme povedzme „Dialog_Profily“. Vložíme do neho nasledovné prvky:
kombinované rozbalovacie textové pole „Zoznam_Profilov“, v ktorom budeme mať následne zobrazené všetky profily;
vstupné textové pole „Novy_Profil“ pre zadávanie názvov nových profilov,
tlačidlo „Pridaj“ pre potvrdenie nového profilu;
tlačidlo „Zmeň“ pre editovanie vybraného profilu;
tlačidlo „Vymaž“ pre vymazanie vybraného profilu;
tlačidlá „OK“ a „Cancel“ pre ukončenie činnosti.

Dialog_profily návrh

Okrem toho si môžeme pridať informačný text, že „Štandardne je nastavený profil "Default", ktorý nie je možné vymazať“. Pokiaľ chceme, aby sa tento text zobrazoval na viacero riadkov, je potrebné na príslušných miestach vložiť kombináciu kláves „Shift“+“Enter“, ktorá to umožňuje.

Teraz sa pozrime na vlastné makrá, ktoré budeme pre prácu potrebovať. Vzhľadom na to, že sú úzko previazané aj s dialógom pre nastavovanie parametrov formátovania dokumentu (ktorý sme si už uvádzali) a s vlastnými funkciami pre toto formátovanie, je ich značné množstvo a preto ich neuvedieme naraz, ale postupne v niekoľkých dieloch tohto seriálu. Dnes sa budeme venovať iba tým, ktoré priamo súvisia s dialógom „Dialog_Profily“.

Vytvorme si v zozname makier nový modul „Profily_funkcie“, kde vložíme (zatiaľ) nasledovné definície premenných a procedúry (budeme ich priebežne komentovať):

dim dlg as object
dim zoznam_profilov(50) as string
dim pocet_profilov as integer
global priznaky_formatovania(16) as integer
global aktualny_profil as string
dim oVstupy as object

Objektová premenná „dlg“ je určená na vlastné priradenie dialógu „Dialog_Proflily“. Musí byť definovaná externe preto, lebo sa na ňu odvolávame vo funkciách, ktoré sú priradené k tlačidlám „Pridaj“, „Zmeň“ a „Vymaž“.

V premennej „zoznam_profilov“ budeme mať uložené názvy profilov. Jej rozsah sme si dali 50 profilov, čo je určite viac než dostatočný počet pre jedného používateľa. Pokiaľ nie, stačí jednoduchá zmena tohto parametra. Táto premenná je určená na testovanie názvov profilov pri ich pridávaní, aby sme nemali dva rovnaké profily. Počet profilov máme uložený v nasledujúcej premennej „pocet_profilov“.

S globálnou premennou „priznaky_formatovania“ sa dnes ešte nestretneme, lebo je určená pre dialóg „Dialog_formatovanie“, ktorý sme si už navrhovali, ale jeho makrá budeme popisovať až nabudúce. Táto premenná je preto globálna, lebo sa podľa nej riadi celá množina funkcií pre formátovanie dokumentu, ktoré si tak isto budeme uvádzať až nabudúce.

Do globálnej premennej „aktualny_profil“ uložíme nakoniec vybraný profil. Podobne, ako premenná „priznaky_formatovania“ je určená pre neustálu informáciu o tom, aký profil práve chceme používať pre formátovanie dokumentu.

Pomocná premenná „oVstupy“ je určená pre pridávanie a odoberanie položiek do zoznamu profilov vo vlastnom dialógu.

A teraz sa pozrime na vlastné funkcie. Pretože makrá sú pomerne dobre okomentované, nebudeme bližšie rozoberať to, ako sú naprogramované.

function inicializacny_subor (nazov_suboru as string) as string
 ' Funkcia vracia názov inicializačného súboru v „UserConfig“ adresári aktuálneho používateľa
 ' K názvu súboru pridávame automaticky príponu „.dat“
 dim cesty as object
 cesty=CreateUnoService("com.sun.star.util.PathSettings")
 inicializacny_subor=cesty.UserConfig+"/"+nazov_suboru+".dat"
end function

sub zapis_nazvy_profilov
 ' Procedúra je určená na zápis názov profilov do definičného súboru
 dim i, subor as integer

 subor = Freefile
 open inicializacny_subor("Zoznam_Profilov_Formatovania_Dokumentov") for Output as #subor
 for i=0 to pocet_profilov
  print #subor,zoznam_profilov(i)
 next i
 close #subor
end sub

sub init_dialog_profily
 ' Inicializácia zoznamu profilov z definičného súboru
 ' Vždy máme minimálne profil „Default“
 dim i, subor as integer
 dim riadok as string

 zoznam_profilov(0)="Default"
 pocet_profilov=0
 oVstupy=dlg.getControl("Zoznam_Profilov")
 oVstupy.AddItem("Default",0)

 ' Ak nastavovací súbor neexistuje, vytvoríme ho
 if not fileexists(inicializacny_subor("Zoznam_Profilov_Formatovania_Dokumentov")) then
   zapis_nazvy_profilov
 endif
 ' Teraz súbor určite existuje - načítame ho
 subor = Freefile
 open inicializacny_subor("Zoznam_Profilov_Formatovania_Dokumentov") for Input as #subor
 ' Inicializácia pomocného počítadla počtu profilov
 i=0
 While not eof(subor)
  Line Input #subor, riadok
  if i>0 then
   ' Profil Default už máme zapísaný v zozname, zaujímajú nás iba tie ostatné
   pocet_profilov=pocet_profilov+1 ' aktuálny počat profilov
   oVstupy.AddItem(riadok,pocet_profilov) ' pridanie profilu do dialógu
   zoznam_profilov(pocet_profilov)=riadok ' pridanie profilu do zoznamu pre testovanie
  end if
  i=i+1
 wend
 close #subor

 dlg.model.Zoznam_Profilov.Text="Default" ' Aby sa nám zobrazil v zozname prvý profil

end sub

sub Vloz_profil_Initiated
 ' Túto procedúru musíme priradiť k tlačidlu „Pridaj“ !

 pom_text=dlg.model.Novy_profil.Text
 if pom_text<>"" then
  ' Názov musí byť zadaný
  existuje=false
  for i=0 to pocet_profilov
   ' Otestujeme či profil s daným názvom existuje bez ohľadu na veľkosť písmen
   existuje=existuje or (ucase(pom_text)=ucase(zoznam_profilov(i)))
  next i
  if not existuje then
   ' Ak profil neexistuje, pridáme ho do zoznamu
   oVstupy=dlg.getControl("Zoznam_Profilov")
   pocet_profilov=pocet_profilov+1
   zoznam_profilov(pocet_profilov)=pom_text
   oVstupy.AddItem(pom_text,pocet_profilov)
  else
   ' Oznam o tom, že nie je možné pridať už existujúci profil
   msgbox "Profil "+pom_text+" už existuje."
  end if
 else
  'Oznam o tom, že názov musí byť zadaný
  msgbox "Názov musí byť zadaný"
 end if
end sub

sub Vymaz_profil_Initiated
 ' Túto procedúru musíme priradiť k tlačidlu „Vymaž“ !

 oVstupy=dlg.getControl("Zoznam_Profilov")
 ' Priradenie názvu vybraného profilu do pomocnej premennej
 pom_text=dlg.model.Zoznam_Profilov.Text
 if pom_text<>"Default" then
  ' Mažeme iba iné profily ako je „Default“
  for i=1 to pocet_profilov
   ' Vyhľadáme pozíciu vybraného profilu
   if pom_text=zoznam_profilov(i) then
    ' Vymažeme profil z dialógu
    oVstupy.removeItems(i,1)
    for j=i to pocet_profilov-1
     ' Vymažeme profil z pomocného zoznamu a posunieme položky v zozname
     zoznam_profilov(j)=zoznam_profilov(j+1)
    next j
   end if
  next i
  ' Upravíme počet záznamov
  pocet_profilov=pocet_profilov-1
  ' Nastavíme zobrazovaný text v rozbaľovacom poli, lebo predtým zobrazený sme práve vymazali
  dlg.model.Zoznam_Profilov.Text="Default"
 else
  ' Oznam o tom, že nemôžeme vymazať profil „Default“
  msgbox "Profil Deafault nie je možné vymazať!"
 end if

end sub

sub Zmen_profil_Initiated
 ' Túto procedúru musíme priradiť k tlačidlu „Zmeň“ !

 ' Uloženie názvu vybraného profilu do pomocnej premennej
 pom_text=dlg.model.Zoznam_Profilov.Text
 ' Nastavenie parametrov pre formátovanie
 Spusti_dialog_formatovania(pom_text)

end sub

sub Nastav_Profil_Formatovania
 ' Vlastná funkcia pre spustenie dialógu „Dialog_profily“

 DialogLibraries.LoadLibrary("Vlastne_makra")
 dlg=CreateUnoDialog(DialogLibraries.Vlastne_makra.Dialog_Profily)
 init_dialog_profily
 Citaj_definiciu_profilu("Default")

 if dlg.Execute()=1 then
  zapis_nazvy_profilov
  Aktualny_profil=dlg.model.Zoznam_profilov.text
 end if

 ' Ak nie je náhodou vybraný žiadny profil, nastaví sa profil „Default“
 if Aktualny_profil="" then
  Aktualny_profil="Default"
 end if
 Formatovanie.Nastav_formatovanie

 dlg.dispose()
end sub

Dialog_Profily

Procedúry „Spusti_dialog_formatovanie“ (bola volaná v procedúre „Zmen_profil_Initiated“) a „Formatovanie.Nastav_formatovanie“ (bola volaná v procedúre „Nastav_Profil_Formatovania“) budú uvedené v ďalších dieloch seriálu.

Na budúce: Procedúry dialógu pre nastavovanie parametrov formátovania dokumentu, alebo makier pribúda a pribúda.

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