Archív Inet.sk Pôvodný autor: Július Pastierik
16. 03. 2006 o 00:00 8802x

Makrá v OpenOffice. org 2/XI. – Záverečné úpravy

V poslednom dieli druhej časti seriálu o programovaní makier v OpenOffice. org dokončíme prvú (ale nie poslednú) komplexnú verziu makier pre formátovanie dokumentov.
Makrá v OpenOffice. org 2/XI. – Záverečné úpravy

Naposledy sme si povedali, že makrá pre formátovanie dokumentov rozdelíme do dvoch modulov, pričom sme si uviedli zdrojové texty modulu „Formatovanie_funkcie“. Dnes si ukážeme, ako budeme tieto funkcie volať v procedúrach, ktoré uložíme do modulu „Formatovanie“. Prístup k podprogramom, ktoré sa nachádzajú v iných moduloch nám umožňuje zápis, ktorý je podobný zápisu pri volaní metód v rámci objektových premenných:

meno_modulu. meno_podprogramu

Ako sme si spomínali minule, chceme zároveň naprogramovať procedúru, ktorá bude volať všetky formátovacie funkcie. Pri ich volaní však nemôžeme použiť hocijaké poradie, pretože potom by sme nedosiahli požadovaný výsledok. Ako prvé musia byť prevedené rôzne zámeny, pretože napr. pred „trojbodkou“ nechávame medzeru, ale pred bodkou nie. Následne je potrebné vymazať viacnásobné medzery, lebo potom by v prípade ich výskytu napr. za spojkou zostala kombinácia nezalomiteľná + zalomiteľná medzera. Ešte pred opravou zalomiteľných medzier za spojkami a predložkami sa najprv musí vložiť medzera za interpunkčné znamienka, lebo potom by mohla zostať zalomiteľná medzera za spojkou, ak predtým pred ňou chýbala. Takisto pre opravou predložiek a spojok musíme zmazať nadbytočné medzery pri interpunkčných znamienkach, pretože v prípade, že napr. na konci zátvorky je iba spojka, zbytočne sa najprv zamení medzera za nezalomiteľnú, aby sa za chvíľu úplne vymazala. Pretože sme vo funkcii pre mazanie nadbytočných medzier pri pri interpunkčných znamienkach neuvažovali s možnosťou nezalomiteľnej medzery a tabelátora, musíme si najprv v module „Formatovanie_funkcie“ opraviť túto funkciu:

function f_Zmaz_Interpunkcia_Medzera as long
 dim TAB as string
 dim kolko as long
 TAB=chr$(&H09) ' Tabelátor
 kolko=Vymen_hladanim("(„|«|"+chr$(&H22)+"|(|[|{)","","", true, false, false)
 kolko=kolko+Vymen_hladanim("(„|«|"+chr$(&H22)+"|(|[|{)"+NM, NM,"", true, false, false)
 kolko=kolko+Vymen_hladanim("(„|«|"+chr$(&H22)+"|(|[|{)"+TAB, TAB,"", true, false,false)
 kolko=kolko+Vymen_hladanim("(“|»|"+chr$(&H22)+"|)|]|}|,|.|!|?|;|:)","","", true,false,false)
 kolko=kolko+Vymen_hladanim(NM+"(“|»|"+chr$(&H22)+"|)|]|}|,|.|!|?|;|:)", NM,"", true, false, false)
 kolko=kolko+Vymen_hladanim(TAB+"(“|»|"+chr$(&H22)+"|)|]|}|,|.|!|?|;|:)", TAB,"", true, false, false)
 f_Zmaz_Interpunkcia_Medzera=kolko
end function

V prípade, že budete potrebovať znak tabelátora aj v iných funkciách, je vhodné zaradiť jeho definíciu medzi spoločné premenné a následne jeho inicializáciu zaradiť do podprogramu Init. To však ponecháme prípadným záujemcom ako domácu úlohu. Modul „Formatovanie“, kde sú definované podprogramy pre formátovanie dokumentu môže pri dodržaní vyššie uvedených podmienok vyzerať napr. takto:

REM Makro pre odstraňovanie viacnásobných medzier
sub Viacnasobna_Medzera
 Formatovanie_funkcie. Init
 msgbox("Vymazanie"+Formatovanie_funkcie. f_Viacnasobna_Medzera()+"viacnásobných medzier.", 0,"Viacnásobné medzery")
end sub

REM Makro pre vkladanie nezalomiteľných medzier za predložky a spojky
sub Nezalomitelne_Spojky
 Formatovanie_funkcie. Init
 msgbox("Vložených"+Formatovanie_funkcie. f_Nezalomitelne_Spojky()+"nezalomiteľných medzier.", 0,"Nezalomiteľné spojky a predložky")
end sub

REM Makro pre vkladanie nezalomiteľných medzier pred a za akademické tituly
sub Nezalomitelne_Tituly
 Formatovanie_funkcie. Init
 msgbox("Vložených"+Formatovanie_funkcie. f_Nezalomitelne_Tituly()+"nezalomiteľných medzier.", 0,"Nezalomiteľné tituly")
end sub

REM Makro pre vkladanie nezalomiteľných medzier do dátumov
sub Nezalomitelne_Datumy
 Formatovanie_funkcie. Init
 msgbox("Vložených"+Formatovanie_funkcie. f_Nezalomitelne_Datumy()+"nezalomiteľných medzier.", 0,"Nezalomiteľné dátumy")
end sub

REM Makro pre vkladanie nezalomiteľných medzier medzi jednociferné čísla a text
sub Nezalomitelne_Jednociferne_Cisla
 Formatovanie_funkcie. Init
 msgbox("Vložených"+Formatovanie_funkcie. f_Nezalomitelne_Jednociferne_Cisla()+"nezalomiteľných medzier.", 0,"Nezalomiteľné jednociferné čísla")
end sub

REM Makro pre vkladanie nezalomiteľných medzier v telefónnych číslach
sub Nezalomitelne_Telefonne_Cisla
 Formatovanie_funkcie. Init
 msgbox("Vložených"+Formatovanie_funkcie. f_Nezalomitelne_Telefonne_Cisla()+"nezalomiteľných medzier.", 0,"Nezalomiteľné telefónne čísla")
end sub

REM Makro pre vkladanie nezalomiteľných medzier medzi čísla a merné jednotky
sub Nezalomitelne_Merne_Jednotky
 Formatovanie_funkcie. Init
 msgbox("Vložených"+Formatovanie_funkcie. f_Nezalomitelne_Merne_Jednotky()+"nezalomiteľných medzier.", 0,"Nezalomiteľné merné jednotky")
end sub

REM Makro pre vloženie nezalomiteľných medzier za čísla ako také
sub Nezalomitelne_Cisla
 dim kolko as long
 Formatovanie_funkcie. Init
 kolko=Formatovanie_funkcie. f_Nezalomitelne_Datumy()
 kolko=kolko+Formatovanie_funkcie. f_Nezalomitelne_Jednociferne_Cisla()
 kolko=kolko+Formatovanie_funkcie. f_Nezalomitelne_Telefonne_Cisla()
 kolko=kolko+Formatovanie_funkcie. f_Nezalomitelne_Merne_Jednotky()
 msgbox("Vložených"+kolko+"nezalomiteľných medzier.", 0,"Nezalomiteľné čísla")
end sub

REM Makro pre mazanie nadbytočných medzier pri interpunkčných znamienkach
sub Zmaz_Interpunkcia_Medzera
 Formatovanie_funkcie. Init
 msgbox("Vymazaných"+Formatovanie_funkcie. f_Zmaz_Interpunkcia_Medzera()+"nadbytočných medzier.", 0,"Nadbytočné interpunkčné medzery")
end sub

REM Makro pre vkladanie chýbajúcich medzier pri interpunkčných znamienkach
sub Vloz_Interpunkcia_Medzera
 Formatovanie_funkcie. Init
 msgbox("Vložených"+Formatovanie_funkcie. f_Vloz_Interpunkcia_Medzera()+"chýbajúcich medzier.", 0,"Chýbajúce interpunkčné medzery")
end sub

REM Makro pre opravu (vloženie/vymazanie) medzier pri interpunkčných znamienkach
sub Oprav_Interpunkcia_Medzera
 Formatovanie_funkcie. Init
 msgbox("Opravených"+Formatovanie_funkcie. f_Zmaz_Interpunkcia_Medzera()+Formatovanie_funkcie. f_Vloz_Interpunkcia_Medzera()+"medzier.", 0,"Nesprávne interpunkčné medzery")
end sub

REM Makro pre rôzne zámeny (napr. troch bodiek za „trojbodku“)
sub Rozne_zameny
 Formatovanie_funkcie. Init
 msgbox("Vykonaných"+Formatovanie_funkcie. f_Rozne_zameny()+"výmien.", 0,"Rôzne zámeny")
end sub

REM Makro pre celkové formátovanie dokumentu
sub Formatuj_Dokument
 dim kolko as long
 Formatovanie_funkcie. Init
 ' Prvé musia byť rôzne zámeny
 kolko=Formatovanie_funkcie. f_Rozne_Zameny()
 ' Potom odstránime viacnásobné medzery
 kolko=kolko+Formatovanie_funkcie. f_Viacnasobna_Medzera()
 ' Opravíme medzery pri interpunkčných znamienkach
 kolko=kolko+Formatovanie_funkcie. f_Zmaz_Interpunkcia_Medzera()+Formatovanie_funkcie. f_Vloz_Interpunkcia_Medzera()
 ' Vložíme nezalomiteľné medzery k číslam
 kolko=kolko+Formatovanie_funkcie. f_Nezalomitelne_Datumy()+Formatovanie_funkcie. f_Nezalomitelne_Jednociferne_Cisla()+Formatovanie_funkcie. f_Nezalomitelne_Telefonne_Cisla()+Formatovanie_funkcie. f_Nezalomitelne_Merne_Jednotky()
 ' Opravíme nezalomiteľné medzery pri akademických tituloch
 kolko=kolko+Formatovanie_funkcie. f_Nezalomitelne_Tituly()
 ' A nakoniec opravíme nezalomiteľné medzery pri spojkách a predložkách
 kolko=kolko+Formatovanie_funkcie. f_Nezalomitelne_Spojky()
 msgbox("Prevedných"+kolko+"náhrad.", 0,"Formátovanie textu")
end sub


Skončili sme druhú veľkú časť seriálu o programovaní makier v OpenOffice. org. Ako ste si mohli všimnúť aj v dnešnom dieli, uvedené funkcie určite neposkytujú všetky možnosti, ktoré pri práci potrebujeme. Na základe doterajších príkladov si však už určite dokážete naprogramovať aj prípadné úpravy, pomocou ktorých vhodne upravíte alebo rozšírite ich možnosti. V našom seriáli budeme teraz pokračovať treťou veľkou časťou, v ktorej si naznačíme možnosti programovania makier pre OpenOffice.org v oblasti vstupov a výstupov, t.j. budeme programovať rôzne vstupné formuláre (dialógové okná) a pod. Pri tomto programovaní sa stále budeme zaoberať funkciami pre formátovanie dokumentov, takže tieto znovu prekonajú niekoľko zmien.

Pre všetkých záujemcov sme zároveň pripravili PDF verziu práve ukončenej druhej časti seriálu o programovaní makier v OpenOffice.org – makra_v_ooo_2.pdf (379kB, MD5 kontrolný súčet – 458D576061D19D55F0D2FF7FD1C6C745). Ako príloha sú priamo v ňom vložené aj zdrojové texty makier v TXT formáte.

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í.

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
Aktualizujte ihneď svoj Wordpress - Kritická zraniteľnosť (CVE-2026-63030) Oznamy
31. 08. 2026

Aktualizujte ihneď svoj Wordpress - Kritická zraniteľnosť (CVE-2026-63030)

Bezpečnostný tím WordPressu vydal núdzovú bezpečnostnú záplatu pre kritickú chybu označenú ako CVE-2026-63030. Táto zraniteľnosť dosiahla...

Čítať viac
Nespíme na vavrínoch, pozrite si našu úrodu nových webov Novinky
01. 07. 2026

Nespíme na vavrínoch, pozrite si našu úrodu nových webov

Prvých šesť mesiacov roka 2026 preverilo našu kreativitu aj technické nasadenie. Naše servery nezaznamenali len nárast prevádzky, ale aj ...

Čí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

Výborný pomer
cena / výkon

Ponúkame kvalitné a stabilné služby za rozumnú cenu 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