Július Pastierik / 16. 03. 2006, 00:00
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.
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.
Copyright © 2002 - 2013 inet.sk, s. r. o. | Všetky práva vyhradené | Neprešlo jazykovou úpravou | ISSN 1336-1899
Využívame kvalitný webhosting za rozumnú cenu od Inet.sk