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

Makrá v OpenOffice.org 6/V. – Čarujeme s koncami odstavcov.

V ďalšom pokračovaní seriálu o programovaní makier v OpenOffice.org si naprogramujeme dve podobné makrá, pomocou ktorých budeme upravovať konce odstavcov.
Makrá v OpenOffice.org 6/V. – Čarujeme s koncami odstavcov.

Pri písaní textu bežne používame viacero odstavcov, t.j. odstavec ukončujeme klávesou „Enter“. V niektorých prípadoch to však nie je žiadúce, pretože potrebujeme, aby sme v dokumente vlastne nemali klasické odstavce, ale aby sa celý dokument správal v skutočnosti ako jediný odstavec (t.j. ako keby sme namiesto klávesy „Enter“ stláčali kombináciu „Shift + Enter“, ktorá predstavuje zalomenie riadku).

Samozrejme, môžete sa opýtať, v akých prípadoch to niekto vôbec môže potrebovať. Odpoveď je veľmi jednoduchá – napr. aj ja pri písaní príspevkov na Inet.sk. Je to tak preto, lebo redakčný systém, pomocou ktorého sa príspevky vkladajú, pri klasickom ukončení odstavca vkladá iné odsadenie, ako pri zalomení riadku. Pri obyčajnom texte by to ešte nebolo na prekážku, ale pri vkladaní zdrojových textov programov by to dopadlo priam katastrofálne, pretože by sa tento nedal prakticky nastaviť ako osobitný štýl (ten totiž aplikuje redakčný systém na označený text, pričom však rešpektuje aj zadané odstavce, takže každý riadok by bol uvedený v osobitnom rámiku).

V makrách pre formátovanie dokumentu sme si o. i. uviedli makro pre odstraňovanie prázdnych odstavcov. A tu sa znovu dostávame k opačnému problému – niekedy potrebujeme mať prázdne odstavce medzi ostatnými odstavcami. Pre príklad takejto potreby nemusíme chodiť ďaleko. Znovu sa vrátime k problematike uverejňovania textov na internete, kde ich jednoducho inak nedokážeme opticky oddeliť (t.j. príslušný redakčný systém musí medzi ne vložiť dvakrát ukončenie riadku – <BR>
<BR>). Pokiaľ však máme text pripravený tak, že odstavce sme si odsadzovali iba nastavením vzdialenosti medzi nimi, je to pre takéto (ale nielen pre takéto) spracovanie naozaj nepostačujúce.

Dosť však bolo teórie, uveďme si teraz vlastné makrá pre upravovanie odstavcov. Na tomto mieste musíme upozorniť, že vzhľadom na možnosti, ktoré nám ponúka aplikačné programovacie rozhranie OpenOffice.org sa tieto zmeny dajú previesť iba v označenom texte a preto, ak ich chceme aplikovať na celý dokument, musíme si ho najprv celý označiť (napr. klávesovou skratkou „Ctrl + A“).

Ešte upozornime, že makrá pre úpravu odstavcov menia aj formát celého označeného textu na formát posledného odstavca. Táto vlastnosť je automatická a programovo by sa riešila naozaj veľmi obtiažne (pokiaľ by sa vôbec dala vyriešiť). Vzhľadom na to sa v makrách vôbec nerieši a preto s ňou musíme počítať ešte pred tým, ako makro spustíme. Z uvedeného dôvodu som do makier pridal aj upozornenie s možnosťou jeho ukončenia bez prevedenia týchto zmien.

Upozornenie na zmenu formátu

Preto, pokiaľ chcete v texte používať rôzne formáty textu, najprv spustite tieto makrá a až následne meňte formáty textu. Pokiaľ vám to nevyhovuje, nezostáva vám nič iné, ako príslušné zmeny previesť manuálne, čo je však pri dlhých dokumentoch časovo naozaj náročná činnosť. Na druhej strane práve táto vlastnosť môže mnohým vyhovovať – jednoduchým spôsobom si práve pomocou tohto makra môžu zmeniť formát celého dokumentu, napr. v prípade, že spracovávali podklady od viacerých autorov resp. s rôznych zdrojov.

Ak náhodou nepotrebujú ich ďalšie vlastnosti (ako je vloženie prázdnych odstavcov či zmenu koncov odstavcov na zalomenie riadku), môžu v ďalších krokoch tieto zmeny vrátiť späť. Na to môže slúžiť napr. formátovanie dokumentu, kde nájdeme možnosť odstránenia prázdnych odstavcov, alebo v prípade zalomenia riadku použiť náhradu reťazca „\n“ za reťazec „\n“ s využitím regulárnych výrazov (v budúcom dieli si na to uvedieme krátke makro).

Výpis počtu zmien

REM Makro pre zámenu odstavcov za line break (odstráni znaky CR z textu)
REM Makro funguje iba v označenom (vybranom) texte
Sub Zrusenie_Odstavcov
 ' Na konci odstavcov je kombinácia znakov CR+LF,
 ' na konci riadkov (ručné zalomenie - shift+enter) iba znak LF.
 ' Preto zrušenie odstavcov spočíva vlastne v odstránení znakov CR.

 dim dokument, vyber as object
 dim vyber_ktory, dlzka_riadku, i as long

 dim pocet_CR as long
 dim riadok as string
 dim znak, CR, slovo as string
 dim zamena as boolean

 pocet_CR=0
 CR=chr(&H0D)

 ' Na začiatku upozorníme, že makro mení formát odstavcov
 slovo="Pozor, funkcia nastaví formátovanie odstavcov podľa posledného z nich!"+CR+CR
 slovo=slovo+" Naozaj ju chcete spustiť?"+CR+CR
 ooo=msgbox(slovo,4,"Zrušenie odstavcov") ' Dialógové okno s tlačidlami „Áno/Nie“

 if ooo=6 then
  ' Stlačené tlačidlo "ÁNO"

  Dokument=ThisComponent
  vyber=dokument.getCurrentSelection() ' aktuálny výber
  vyber_pocet=vyber.getCount() ' Počet výberov

  for vyber_ktory=0 to vyber_pocet-1
   riadok = vyber.getByIndex(vyber_ktory).getString() ' reťazec z výberu
   dlzka_riadku=len(riadok)
   zamena=false

   rem pre všetky znaky z príslušného výberu
   for i=1 to dlzka_riadku
    znak=mid(riadok,i,1) ' spracovávame i-ty znak z výberu
    if instr(CR,znak)<>0 then
     ' znak je CR, odstránime ho a spočítame počet odstránených odstavcov
     mid(riadok,i,1,"") ' Nájdený znak CR nahradíme prázdnym znakom
     dlzka_riadku=len(riadok)
     pocet_CR=pocet_CR+1 ' Pripočítame práve odstránený znak CR, t.j. odstránený odstavec
     zamena=true ' Indikácia, že sme odstránili znak CR
    endif
   next i
   if zamena then
    ' Ak sme našli znak CR (t.j. koniec odstavca), zameníme starý text za nový, čím odstránime odstavec
    vyber.getByIndex(vyber_ktory).setString(riadok)
   endif
  next vyber_ktory
 endif
 ' Na konci si vypíšeme počet odstránených odstavcov
 msgbox("Zrušených "+pocet_CR+" odstavcov",0,"Rušenie odstavcov")

End Sub

Upozornenie na zmenu formátovania

REM Makro pre pridanie prázdnych odstavcov za každý iný odstavec
REM Makro funguje iba v označenom (vybranom) texte
Sub 
Zdvojnasobenie_Odstavcov
 ' Na konci odstavcov je kombinácia znakov CR+LF,
 ' preto za znakom LF pridáme ďalšiu kombináciu CR+LF.
 dim dokument, vyber as object
 dim vyber_ktory, dlzka_riadku, i as long

 dim pocet_CR as long
 dim riadok as string
 dim znak, CR, LF, slovo as string
 dim zamena as boolean

 pocet_CR=0
 CR=chr(&H0D)
 LF=chr(&H0A)

 ' Na začiatku upozorníme, že makro mení formát odstavcov
 slovo="Pozor, funkcia nastaví formátovanie odstavcov podľa posledného z nich!"+CR+CR
 slovo=slovo+" Naozaj ju chcete spustiť?"+CR+CR
 ooo=msgbox(slovo,4,"Zdvojnásobenie odstavcov") ' Dialógové okno s tlačidlami „Áno/Nie“

 if ooo=6 then
  ' Stlačené tlačidlo "ÁNO"

  Dokument=ThisComponent
  vyber=dokument.getCurrentSelection() ' aktuálny vyber
  vyber_pocet=vyber.getCount() ' Počet výberov

  for vyber_ktory=0 to vyber_pocet-1
   riadok = vyber.getByIndex(vyber_ktory).getString() ' reťazec z výberu
   dlzka_riadku=len(riadok)
   zamena=false

   rem pre všetky znaky z výberu
   for i=1 to dlzka_riadku
    znak=mid(riadok,i,1) ' spracovávame i-ty znak z výberu
    if instr(LF,znak)<>0 then
     ' znak je LF, nahradíme ho LF+CR+LF čím pridáme odstavec a spočítame počet zámen
     mid(riadok,i,1,LF+CR+LF)
     ' Posunieme index o dva vložené znaky (CR+LF)
     i=i+2
     dlzka_riadku=len(riadok)
     pocet_CR=pocet_CR+1 ' Počet vložených prázdnych odstavcov
     zamena=true ' Indikácia vloženia prázdneho odstavca
    endif
   next i
   if zamena then
    ' Do textu sme vložili prázdny odstavec, preto nahradíme starý text za nový, čím vlastne prevedieme vlastnú úpravu
    vyber.getByIndex(vyber_ktory).setString(riadok)
   endif
  next vyber_ktory
 endif
 ' Na konci si vypíšeme počet vložených prázdnych odstavcov
 msgbox("Pridaných "+pocet_CR+" prázdnych odstavcov",0,"Pridávanie odstavcov")

End Sub

Výpis počtu vložených odstavcovNa budúce: Rôzne náhrady textu, alebo nie sú tri bodky ako tri bodky.

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