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

Makrá v OpenOffice.org 6/VII. – Vlastný dialóg pre zámeny

V ďalšom pokračovaní seriálu o programovaní makier v OpenOffice.org si vytvoríme vlastný dialóg pre hľadanie a nahrádzanie textu.
Makrá v OpenOffice.org 6/VII. – Vlastný dialóg pre zámeny

Pri praktickej práci s OpenOffice.org často používame dialógové okno „Nájsť a nahradiť“ (klávesová skratka „Ctrl + F“). Mnohým však nevyhovuje to, že napríklad zaškrtávacie políčko pre regulárne výrazy sa zobrazí až po stlačení tlačidla „Viac volieb“, pričom si OpenOffice.org nepamätá ani jeho predchádzajúce nastavenie. Toto platí pre každé otvorenie tohto dialógového okna, takže ak často používame práve regulárne výrazy, je táto práca veľmi spomalená.

Okno nahradiť po otvorení

Preto si teraz naprogramujeme vlastné dialógové okno pre nahrádzanie textu. V doterajších dieloch sme si naprogramovali dve vlastné funkcie, pomocou ktorých sme nahrádzali jeden reťazec druhým. Konkrétne ide o funkcie „Vymen“ a „Vymen_hladanim“, ktoré sme si uložili do modulu makier „Formatovanie_funkcie“.

Okno nahradiť s rozšírenými možnosťami

V stručnosti si pripomeňme, že funkcia „Vymen“ využíva štandardné služby pre zámenu reťazcov s tým, že môžeme nastaviť tri logické parametre pre vyhľadávanie – regulárne výrazy, celé slová a rozlišovanie veľkosti písmen. Funkcia „Vymen_hladanim“ je už zložitejšia, pretože ako parametre nemáme dva, ale tri reťazce. Je to tak preto, lebo v tejto funkcii zamieňame celý nájdený reťazec, ale iba jeho vnútornú časť. Pravdaže, aj tu máme možnosť použiť už spomenuté tri logické parametre pre vyhľadávanie.

Tieto funkcie sa nám preto priamo ponúkajú na to, aby sme si pripravili vlastný dialóg pre vyhľadávanie. Dialóg nazveme „Dialog_Zamena“ a musí obsahovať aspoň tieto položky: tri textové polia, ktoré nazveme „V_retazci“, „Hladat“ a „Nahradit_za“; tri zaškrtávacie políčka – „Regularne_vyrazy“, „Cele_slova“ a „Velke_pismena“; dve tlačidlá – „Zamenit“, ktorému priradíme typ tlačidla „OK“ a „Zrusit“, ktorému priradíme typ „Cancel“ („Zrušiť“). Okrem toho si jednotlivé položky doplníme vhodnými textovými popismi.

Návrh vlastného dialógu pre náhrady

Vlastnej tvorbe dialógu sa už, samozrejme, nebudeme venovať, pretože na to boli určené predchádzajúce diely, kde sme sa tomu podrobne venovali. Teraz nám nezostáva už nič iné, iba naprogramovať vlastné makrá pre obsluhu tohto dialógu s následným volaním už spomínaných vyhľadávacích funkcií.

Aby sme nemuseli zadávať špeciálne zaškrtávacie políčko pre rozlíšenie situácie, kedy chceme využiť funkciu „Vymen“ a kedy funkciu „Vymen_hladanim“, rozlíšime to automaticky podľa toho, či zadáme text do dialógovej textovej premennej V“_retazci“. Ak áno, tak budeme používať funkciu „Vymen_hladanim“, ak nie, tak funkciu „Vymen“. Napokon, z vlastného makra je dosť jasné a prípadne si toto môžete uviesť ako doplňujúcu textovú informáciu aj do vytváraného dialógu.

Štandardná zámena jedného reťazca za druhý

Aby sa zadané hodnoty a parametre pamätali aj pri nových spusteniach tohto dialógu, príslušné premenné zadefinujeme ako typ GLOBAL. Pretože OpenOffice.org automaticky nastavuje premenné pri ich deklarácii na nulové hodnoty, nemusíme sa starať o to, aké hodnoty budú mať pred prvým spustením. Musíme však počítať s tým, že ak náhodou toto nastavenie nebude v niektorej verzii alebo na niektorom operačnom systéme fungovať, tak pri pri prvom spustení uvidíme náhodné hodnoty.

Zámena vo vnútri nájdeného reťazca

Makrá si pre lepšiu orientáciu uložíme do modulu „Specialna_zamena“. Pre vlastné vyvolanie s pustenie dialógu so zámenami voláme procedúru „Specialne_zamen“, pričom na konci si vypíšeme, koľko výmen bolo urobených.

REM Premenné si zadefinujeme ako global, aby sa pamätali aj pri ďalšom spustení
REM Pozor! Pri prvom spustení môžu obsahovať náhodné veličiny
global zamen_V_retazci, zamen_Hladat, zamen_Nahradit_za as string
global zamen_Regularne_vyrazy, zamen_Cele_slova, zamen_Velke_pismena as boolean

sub Init_dialog_zameny(oDialog as object)
 REM Inicializácia prvkov dialógu

 oDialog.model.V_retazci.Text = zamen_V_retazci
 oDialog.model.Hladat.Text = zamen_Hladat
 oDialog.model.Nahradit_za.Text = zamen_Nahradit_za
 if zamen_Regularne_vyrazy then
  oDialog.model.Regularne_vyrazy.State=1
 else
  oDialog.model.Regularne_vyrazy.State=0
 endif
  if zamen_Cele_slova then
  oDialog.model.Cele_slova.State=1
 else
  oDialog.model.Cele_slova.State=0
 endif
 if zamen_Velke_pismena then
  oDialog.model.Velke_pismena.State=1
 else
  oDialog.model.Velke_pismena.State=0
 endif

end sub

sub vykonaj_zamenu(oDialog as object)
 REM Vlastná zámena podľa zadaných hodnôt v dialógu

 dim kolko as long

 REM Príprava globálnych premenných
 zamen_V_retazci = oDialog.model.V_retazci.Text
 zamen_Hladat = oDialog.model.Hladat.Text
 zamen_Nahradit_za = oDialog.model.Nahradit_za.Text
 zamen_Regularne_vyrazy = oDialog.model.Regularne_vyrazy.State=1
 zamen_Cele_slova = oDialog.model.Cele_slova.State=1
 zamen_Velke_pismena = oDialog.model.Velke_pismena.State=1

 REM Príprava dokumentu pre zámenu
 Formatovanie_funkcie.Init
 if zamen_V_retazci="" then
  REM Ak nezadáme reťazec "V_retazci", zamieňame priamo
  kolko=Formatovanie_funkcie.Vymen(zamen_Hladat, zamen_Nahradit_za, zamen_Regularne_vyrazy, zamen_Cele_slova, zamen_Velke_pismena)
 else
  REM Ak zadáme reťazec "V_retazci", zanieňame špeciálne
  kolko=Formatovanie_funkcie.Vymen_hladanim(zamen_V_retazci, zamen_Hladat, zamen_Nahradit_za, zamen_Regularne_vyrazy, zamen_Cele_slova, zamen_Velke_pismena)
 endif
 msgbox("Prevedných "+kolko+" zámien.", 0,"Špeciálne zámeny")

end sub

sub Specialne_zamen

 dim oDialog as object

 oDialog=CreateUnoDialog(DialogLibraries.Vlastne_makra.Dialog_Zamena)
 Init_dialog_zameny(oDialog)

 if oDialog.Execute()=1 then
  vykonaj_zamenu(oDialog)
 endif
 oDialog.dispose()

end sub

Na budúce: Makro pre typografické úpravy textu, alebo pozrime sa aj na „konkurenciu“.

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