Archív Inet.sk Pôvodný autor: Július Pastierik
04. 04. 2008 o 00:00 3764x

Makrá v OpenOffice.org 01/2008

Aj v roku 2008 budeme pokračovať v seriáli o makrách pre OpenOffice.org. Tento seriál však nebude vychádzať tak pravidelne, ako doteraz, ale jeho diely budú vznikať podľa potreby používateľov. V prvom dieli sa znovu vrátime k formátovaniu dokumentov, ktoré rozšírime o novú funkciu.
Makrá v OpenOffice.org 01/2008

 

V minulom roku sme ukončili pomerne rozsiahlu časť makier, ktoré sa venovali formátovaniu dokumentov. Okrem iného sme urobili makrá, ktoré dokázali vkladať do textu nezalomiteľné medzery za jednoznakové preložky a spojky, medzi akademické tituly a meno, medzi číslice a podobne.

Na základe požiadavok niektorých používateľov sme urobili aj verziu, pomocou ktorej sme dokázali vkladať tzv. pružné nezalomiteľné medzery. V podstate išlo o to, že sme pred obyčajnú medzeru vložili znak „Word Joiner“. Tento znak však nie vždy funguje tak, ako by mal – jednoducho niekedy oddelí predložku či spojku a následný text na dva riadky. Toto správanie je záhadou, ale je to tak.

Našťastie, aj na toto existuje riešenie, ktoré si dnes ukážeme. Spočíva v tom, že vyhľadáme, či nám na konci riadku „náhodou“ nezostal „trčať“ znak „Word Joiner“ aj s medzerou a ak áno, tak ho zameníme za obyčajnú nezalomiteľnú medzeru (znak NBSP).

Pretože musíme hľadať konce riadkov, nezostáva nám nič iné, ako použiť viditeľný kurzor, kde je k dispozícii funkcia skočenia na koniec riadku. Pretože budeme prechádzať textom, bude pri vlastnej oprave pred našimi očami celý text rolovať. Pozor, pri dlhšom texte ma z toho trochu rozbolela hlava, preto odporúčam, aby ste priebeh sledovali iba občas.

Ako obvykle, vlastné makro je okomentované a preto nebudeme venovať osobitnú pozornosť príkazom, ktoré sú tam napísané.

Nesprávne zalomený text pomocou WJ

REM Procedúra hľadá nesprávne zalomenia WJ na konci riadku
REM a nahradí ich znakom NBSP
function WJ_za_NBSP_na_konci_riadku as long

 dim NBSP, WJ as string
 dim Kurzor, Povodny as object
 dim Koniec as boolean
 dim pom as string
 dim kolko as long
 
 kolko=0
 
 NBSP=chr$(&HA0)
 WJ=chr$(&H2060)

 kurzor= ThisComponent.currentcontroller.getViewCursor() ' viditeľný kurzor
 Povodny=kurzor.getstart() ' Pôvodná poloha kurzoru – aby sme sa mohli vrátiť po prerolovaní celého textu
 kurzor.collapsetostart() ' ak je niečo označené, tak zrušiť výber, aby fungovala funkcia "skoč na koniec riadku"
 kurzor.gotoStart(false) ' Skočíme na začiatok dokumentu

 do ' Kým neprejdeme celý text, tak
  ' Označíme si tri znaky na konci riadku a ak posledné dva sú WJ+medzera, tak je nesprávne zalomenie
  Kurzor.gotoEndOfLine(false) ' skočíme na koniec riadku
  Kurzor.goLeft(3, false)
  Kurzor.goRight(3, true) ' zvýraznenie posledných troch znakov
  if right(Kurzor.string,2) = WJ+" " then
   ' Je to nesprávne zalomenie WJ+medzera
   pom=Kurzor.getstring() ' z posledných troch znakov (písmeno+WJ+medzera)
   pom=left(pom,1)+NBSP ' písmeno+NBSP ' zoberieme iba prvé písmeno a pridáme za to NBSP
   Kurzor.setstring(pom) ' Vlastná zámena
   kolko=kolko+1 ' počet zámen
  endif
  Kurzor.collapseToEnd() ' Zrušíme označený vymenený text
  Kurzor.gotoEndOfLine(false) ' Skočíme na koniec riadku
  Koniec=not(kurzor.goRight(1,false)) ' a posunieme sa o jeden znak ďalej, ak to ide
 loop until Koniec ' Skončíme, ak sa už nemôžeme posunúť
 kurzor.gotoRange(Povodny,false) ' Vrátime sa na pôvodnú polohu
 WJ_za_NBSP_na_konci_riadku=kolko
end function

Oprava zalomenia pomocou NBSP

Pravdaže, v tejto súvislosti vzniká niekedy potreba drobných makier, pomocou ktorých dokážeme vzájomne konvertovať medzery medzi sebou. V nasledujúcom budeme predpokladať, že makrá, ktoré sme uviedli v minulom roku čiastočne používate – konkrétne funkciu „Vymen“ v module „ Formatovanie_funkcie“.

Text s obyčajnými medzerami

REM Makro pre nahradenie nezalomiteľných medzier zalomiteľnými
function f_Zalomitelna_Medzera as long
 Formatovanie_funkcie.init
 f_Zalomitelna_Medzera=Formatovanie_funkcie.Vymen(chr$(&HA0)," ",false,false,false)+_
  Formatovanie_funkcie.Vymen(chr$(&H2060),"",false,false,false)
end function

REM Makro pre nahradenie zalomiteľných medzier nezalomiteľnými NBSP
function f_Nezalomitelna_Medzera_NBSP as long
 Formatovanie_funkcie.init
 f_Nezalomitelna_Medzera_NBSP=Formatovanie_funkcie.Vymen(" ",chr$(&HA0),false,false,false)
end function

REM Makro pre nahradenie zalomiteľných medzier nezalomiteľnými WJ
function f_Nezalomitelna_Medzera_WJ as long
 Formatovanie_funkcie.init
 f_Nezalomitelna_Medzera_WJ=Formatovanie_funkcie.Vymen(" ",chr$(&H2060)+" ",false,false,false)
end function

REM Makro pre zámenu NBSP za WJ
function f_NBSP_za_WJ as long
 Formatovanie_funkcie.init
 f_NBSP_za_WJ=Formatovanie_funkcie.Vymen(chr$(&HA0),chr$(&H2060)+" ",false,false,false)
end function

REM Makro pre zámenu WJ za NBSP
function f_WJ_za_NBSP as long
 Formatovanie_funkcie.init
 f_WJ_za_NBSP=Formatovanie_funkcie.Vymen(chr$(&H2060)+" ",chr$(&HA0),false,false,false)
end function

Text po úprave pre inet.sk

A úplne na záver si ako bonus uveďme jedno krátke makro, pomocou ktorého dokážeme rýchlo odstrániť HTML značky. Pozor, nejedná sa o prevod na text, ale iba o odstránenie príkazov, ktoré sú uzatvorené medzi znakmi „<“ a „>“. V mnohých prípadoch je však takýto prevod postačujúci a nie je problém, aby ste si, povedzme ako domácu úlohu, naprogramovali prevod kódov znakov na vlastné znaky.

HTML kódovaný text

REM Makro, ktoré vymaže príkazy HTML uzatvorené medzi <>
function f_Zrus_HTML as long
 Formatovanie_funkcie.init
 ' Pri hľadaní hľadá všetko, čo je uzatvorené v <>, ale vo vnútri nesmú byť tieto znaky,
 ' lebo by označil aj text, ktorý je napr. pri internetových odkazoch.
 f_Zrus_HTML=Formatovanie_funkcie.Vymen("<[^<^>]*>","",true,false,false,false)
end function

Odstránené HTML príkazy

Na záver ešte poprosím čitateľov, aby mi zasielali mailom veci, ktoré by prípadne chceli vyriešiť pomocou makier. Vopred všetkým ďakujem.

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

Bezpečnostné aktualizácie PHP: Chráňte svoj web pred hrozbami Oznamy
21. 10. 2026

Bezpečnostné aktualizácie PHP: Chráňte svoj web pred hrozbami

Vývojársky tím PHP vydal dôležité bezpečnostné záplaty pre všetky oficiálne podporované verzie PHP 8. Na našich serveroch sme nezaváhali ...

Čítať viac
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

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