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

Makrá v OpenOffice.org 09/2008

V už treťom pokračovaní makier pre prípravu slov do slovenského slovníka si ukážeme časť, kde sú definované globálne premenné a vlastná kontrola zadaného slova.
Makrá v OpenOffice.org 09/2008

Na úvod dnešného dielu seriálu o makrách v OpenOffice.org, v ktorom si predstavujeme rozšírenie pre prípravu slov do slovenského slovníka si ukážeme definíciu globálnych premenných (ktoré sme už používali) a funkcie, pomocou ktorých „tvarujeme“ zadané slovo. V podstate sa na to využíva funkcia hľadania a výmeny, pretože podmienky sú definované ako regulárne výrazy. Je to teda praktická ukážka, ako sa dajú využiť takéto funkcie aj na pomerne komplikované účely.

global pfx_N_d(3,0) as string
global pfx_F_d(3,0) as string

global sfx_mz_d(3,0) as string
global sfx_Z_d(3,0) as string
global sfx_U_d(3,0) as string
global sfx_D_d(3,0) as string
global sfx_K_d(3,0) as string
global sfx_M_d(3,0) as string
global sfx_S_d(3,0) as string
global sfx_V_d(3,0) as string
global sfx_A_d(3,0) as string
global sfx_C_d(3,0) as string
global sfx_H_d(3,0) as string
global sfx_B_d(3,0) as string
global sfx_J_d(3,0) as string
global sfx_L_d(3,0) as string
global sfx_O_d(3,0) as string
global sfx_Q_d(3,0) as string
global sfx_Y_d(3,0) as string
global sfx_I_d(3,0) as string
global sfx_P_d(3,0) as string
global sfx_X_d(3,0) as string
global sfx_E_d(3,0) as string
global sfx_W_d(3,0) as string
global sfx_T_d(3,0) as string
global sfx_R_d(3,0) as string
global sfx_mb_d(3,0) as string
global sfx_c_c_d(3,0) as string
global sfx_mo_d(3,0) as string

global pfx_N_p as long
global pfx_F_p as long

global sfx_mz_p as long
global sfx_Z_p as long
global sfx_U_p as long
global sfx_D_p as long
global sfx_K_p as long
global sfx_M_p as long
global sfx_S_p as long
global sfx_V_p as long
global sfx_A_p as long
global sfx_C_p as long
global sfx_H_p as long
global sfx_B_p as long
global sfx_J_p as long
global sfx_L_p as long
global sfx_O_p as long
global sfx_Q_p as long
global sfx_Y_p as long
global sfx_I_p as long
global sfx_P_p as long
global sfx_X_p as long
global sfx_E_p as long
global sfx_W_p as long
global sfx_T_p as long
global sfx_R_p as long
global sfx_mb_p as long
global sfx_c_c_p as long
global sfx_mo_p as long

global def_pfx_sfx as integer
global oDialog_slovnik as object
global nacitana_definicia as boolean

function oNovy_subor()
 dim url as string
 url="private:factory/swriter"
 oNovy_subor=StarDesktop.loadComponentFromURL(url, "_blank", 0, Array())
end function

function fZamen_Vo_Vnutri (V_Com, Co, Za as string) as string
 dim pom as string
 dim i, j as long
 pom=V_Com
 i=instr(V_Com,Co)
 j=len(V_Com)-i-len(Co)+1
 if i>0 then
  pom=left(V_Com,i-1)+Za
  if j>0 then
   pom=pom+right(V_Com,j)
  end if
 end if
 fZamen_Vo_Vnutri=pom
end function

sub kon_zoznam (odokument, slovo, sufix, kolko)
 dim kurzor, nasiel, oVymen as object
 dim pomslovo, co, za as string
 dim i as integer
 
 pomslovo=slovo+" "
 oVymen=odokument.createSearchDescriptor()
 oVymen.SearchRegularExpression=true
 oVymen.SearchWords=false
 oVymen.SearchCaseSensitive=false
 
 kurzor=odokument.currentcontroller.getViewCursor()
 ' Základné slovo
 
 kurzor.gotoStart(false)
 kurzor.setstring(pomslovo)
 kurzor.gotoStart(false)
 
 ' Sufixy
 for i=1 to kolko
  kurzor.gotoStart(false)
  kurzor.setstring(pomslovo)
  kurzor.gotoStart(true)
  oVymen.SearchString=sufix(3,i)+">"
  nasiel=odokument.findFirst(oVymen)
  if NOT isNull(nasiel) then
   co=sufix(1,i)
   za=sufix(2,i)
   if co="" then
    co=nasiel.String
    za=co+sufix(2,i)
   endif
   if right(trim(pomslovo),len(co))=co then
    nasiel.String=fZamen_Vo_Vnutri(nasiel.String,co,za)
   else
    kurzor.setstring("")
   endif
  else
   kurzor.setstring("")
  end if
 next i
end sub

sub spracuj_sufixy(odokument, slovo)
 kon_zoznam(odokument, slovo, array(), 0)
 if oDialog_slovnik.model.sfx_mz.State=1 then kon_zoznam (odokument, slovo, sfx_mz_d, sfx_mz_p)
 if oDialog_slovnik.model.sfx_Z.State=1 then kon_zoznam (odokument, slovo, sfx_Z_d, sfx_Z_p)
 if oDialog_slovnik.model.sfx_U.State=1 then kon_zoznam (odokument, slovo, sfx_U_d, sfx_U_p)
 if oDialog_slovnik.model.sfx_D.State=1 then kon_zoznam (odokument, slovo, sfx_D_d, sfx_D_p)
 if oDialog_slovnik.model.sfx_K.State=1 then kon_zoznam (odokument, slovo, sfx_K_d, sfx_K_p)
 if oDialog_slovnik.model.sfx_M.State=1 then kon_zoznam (odokument, slovo, sfx_M_d, sfx_M_p)
 if oDialog_slovnik.model.sfx_S.State=1 then kon_zoznam (odokument, slovo, sfx_S_d, sfx_S_p)
 if oDialog_slovnik.model.sfx_V.State=1 then kon_zoznam (odokument, slovo, sfx_V_d, sfx_V_p)
 if oDialog_slovnik.model.sfx_A.State=1 then kon_zoznam (odokument, slovo, sfx_A_d, sfx_A_p)
 if oDialog_slovnik.model.sfx_C.State=1 then kon_zoznam (odokument, slovo, sfx_C_d, sfx_C_p)
 if oDialog_slovnik.model.sfx_H.State=1 then kon_zoznam (odokument, slovo, sfx_H_d, sfx_H_p)
 if oDialog_slovnik.model.sfx_B.State=1 then kon_zoznam (odokument, slovo, sfx_B_d, sfx_B_p)
 if oDialog_slovnik.model.sfx_J.State=1 then kon_zoznam (odokument, slovo, sfx_J_d, sfx_J_p)
 if oDialog_slovnik.model.sfx_L.State=1 then kon_zoznam (odokument, slovo, sfx_L_d, sfx_L_p)
 if oDialog_slovnik.model.sfx_O.State=1 then kon_zoznam (odokument, slovo, sfx_O_d, sfx_O_p)
 if oDialog_slovnik.model.sfx_Q.State=1 then kon_zoznam (odokument, slovo, sfx_Q_d, sfx_Q_p)
 if oDialog_slovnik.model.sfx_Y.State=1 then kon_zoznam (odokument, slovo, sfx_Y_d, sfx_Y_p)
 if oDialog_slovnik.model.sfx_I.State=1 then kon_zoznam (odokument, slovo, sfx_I_d, sfx_I_p)
 if oDialog_slovnik.model.sfx_P.State=1 then kon_zoznam (odokument, slovo, sfx_P_d, sfx_P_p)
 if oDialog_slovnik.model.sfx_X.State=1 then kon_zoznam (odokument, slovo, sfx_X_d, sfx_X_p)
 if oDialog_slovnik.model.sfx_E.State=1 then kon_zoznam (odokument, slovo, sfx_E_d, sfx_E_p)
 if oDialog_slovnik.model.sfx_W.State=1 then kon_zoznam (odokument, slovo, sfx_W_d, sfx_W_p)
 if oDialog_slovnik.model.sfx_T.State=1 then kon_zoznam (odokument, slovo, sfx_T_d, sfx_T_p)
 if oDialog_slovnik.model.sfx_R.State=1 then kon_zoznam (odokument, slovo, sfx_R_d, sfx_R_p)
 if oDialog_slovnik.model.sfx_mb.State=1 then kon_zoznam (odokument, slovo, sfx_mb_d, sfx_mb_p)
 if oDialog_slovnik.model.sfx_mo.State=1 then kon_zoznam (odokument, slovo, sfx_mo_d, sfx_mo_p)
 if oDialog_slovnik.model.sfx_c_c.State=1 then kon_zoznam (odokument, slovo, sfx_c_c_d, sfx_c_c_p)

end sub

sub vytvor_zoznam
 dim dokument, kurzor, nasiel, oVymen as object
 dim url, slovo, pomslovo as string
 dim i as integer
 
 slovo=trim(oDialog_slovnik.model.Slovo_slovnika.Text)
 if slovo<>"" then
  url="private:factory/swriter"
  dokument=StarDesktop.loadComponentFromURL(url, "_blank", 0, Array())
  ' Základné slovo
  spracuj_sufixy(dokument, slovo)
  ' Pre všetky prefixy
  if oDialog_slovnik.model.pfx_N.State=1 then
   for i=1 to pfx_N_p
    spracuj_sufixy(dokument, pfx_N_d(2,i)+slovo)
   next i
  endif
  if oDialog_slovnik.model.pfx_F.State=1 then
   for i=1 to pfx_F_p
    spracuj_sufixy(dokument, pfx_F_d(2,i)+slovo)
   next i
  endif
  if oDialog_slovnik.model.spfx_do.State=1 then
   spracuj_sufixy(dokument, "do"+slovo)
   if oDialog_slovnik.model.spfx_ne_do.State=1 then
    spracuj_sufixy(dokument, "nedo"+slovo)
   endif
  endif
  if oDialog_slovnik.model.spfx_na.State=1 then
   spracuj_sufixy(dokument, "na"+slovo)
   if oDialog_slovnik.model.spfx_ne_na.State=1 then
    spracuj_sufixy(dokument, "nena"+slovo)
   endif
  endif
  if oDialog_slovnik.model.spfx_nad.State=1 then
   spracuj_sufixy(dokument, "nad"+slovo)
   if oDialog_slovnik.model.spfx_ne_nad.State=1 then
    spracuj_sufixy(dokument, "nenad"+slovo)
   endif
  endif
  if oDialog_slovnik.model.spfx_o.State=1 then
   spracuj_sufixy(dokument, "o"+slovo)
   if oDialog_slovnik.model.spfx_ne_o.State=1 then
    spracuj_sufixy(dokument, "neo"+slovo)
   endif
  endif
  if oDialog_slovnik.model.spfx_ob.State=1 then
   spracuj_sufixy(dokument, "ob"+slovo)
   if oDialog_slovnik.model.spfx_ne_ob.State=1 then
    spracuj_sufixy(dokument, "neob"+slovo)
   endif
  endif
  if oDialog_slovnik.model.spfx_po.State=1 then
   spracuj_sufixy(dokument, "po"+slovo)
   if oDialog_slovnik.model.spfx_ne_po.State=1 then
    spracuj_sufixy(dokument, "nepo"+slovo)
   endif
  endif
  if oDialog_slovnik.model.spfx_pre.State=1 then
   spracuj_sufixy(dokument, "pre"+slovo)
   if oDialog_slovnik.model.spfx_ne_pre.State=1 then
    spracuj_sufixy(dokument, "nepre"+slovo)
   endif
  endif
  if oDialog_slovnik.model.spfx_pri.State=1 then
   spracuj_sufixy(dokument, "pri"+slovo)
   if oDialog_slovnik.model.spfx_ne_pri.State=1 then
    spracuj_sufixy(dokument, "nepri"+slovo)
   endif
  endif
  if oDialog_slovnik.model.spfx_spolu.State=1 then
   spracuj_sufixy(dokument, "spolu"+slovo)
   if oDialog_slovnik.model.spfx_ne_spolu.State=1 then
    spracuj_sufixy(dokument, "nespolu"+slovo)
   endif
  endif
  if oDialog_slovnik.model.spfx_roz.State=1 then
   spracuj_sufixy(dokument, "roz"+slovo)
   if oDialog_slovnik.model.spfx_ne_roz.State=1 then
    spracuj_sufixy(dokument, "neroz"+slovo)
   endif
  endif
  if oDialog_slovnik.model.spfx_spo.State=1 then
   spracuj_sufixy(dokument, "spo"+slovo)
   if oDialog_slovnik.model.spfx_ne_spo.State=1 then
    spracuj_sufixy(dokument, "nespo"+slovo)
   endif
  endif
  if oDialog_slovnik.model.spfx_u.State=1 then
   spracuj_sufixy(dokument, "u"+slovo)
   if oDialog_slovnik.model.spfx_ne_u.State=1 then
    spracuj_sufixy(dokument, "neu"+slovo)
   endif
  endif
  if oDialog_slovnik.model.spfx_vy.State=1 then
   spracuj_sufixy(dokument, "vy"+slovo)
   if oDialog_slovnik.model.spfx_ne_vy.State=1 then
    spracuj_sufixy(dokument, "nevy"+slovo)
   endif
  endif
  if oDialog_slovnik.model.spfx_vy_y.State=1 then
   spracuj_sufixy(dokument, "vý"+slovo)
   if oDialog_slovnik.model.spfx_ne_vy_y.State=1 then
    spracuj_sufixy(dokument, "nevý"+slovo)
   endif
  endif
  if oDialog_slovnik.model.spfx_z.State=1 then
   spracuj_sufixy(dokument, "z"+slovo)
   if oDialog_slovnik.model.spfx_ne_z.State=1 then
    spracuj_sufixy(dokument, "nez"+slovo)
   endif
  endif
  if oDialog_slovnik.model.spfx_za.State=1 then
   spracuj_sufixy(dokument, "za"+slovo)
   if oDialog_slovnik.model.spfx_ne_za.State=1 then
    spracuj_sufixy(dokument, "neza"+slovo)
   endif
  endif
 endif
end sub

 

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