Programovanie makier v LibreOffice: Spolupráca makier (1)

LO.png V tomto dieli by som sa chcel bližšie pozrieť na formy komunikácie medzi makrami. Môžu si jednotlivé procedúry (makra) vymieňať informácie? Ak áno, ako? I to vám priblíži tento diel.  

Spúšťanie makra ako príkaz

Syntax jazyka Basic nám umožňuje vytvárať kooperáciu medzi jednotlivými makrami. Ukážeme si, ako volať v makre ďalšie makro. Môžme volané makro definovať v „nadradenom“ makre ako príkaz alebo ako funkciu (budúci diel uvidíte).

Ak definujeme volané makro ako príkaz, môžeme si zvoliť bezparametrický príkaz alebo parametrický.

1. program: Voláme makro ako príkaz bez parametra

Sub hlavneMakro REM začiatok procedúry
 makroPrikazBezParametru REM makro ako príkaz
 End Sub REM koniec procedúry
 
 Sub makroPrikazBezParametru 
 Dim a as Integer REM deklarácie premenných
 Dim b as Integer 
 a = InputBox("Zadajte prve číslo") REM vstup od užívateľa
 b = InputBox("Zadajte druhe číslo")
 MsgBox "Výsledok sčítania je: "& a+b &Chr(10)&"Výsledok odčítania je:
"& a-b &Chr(10)&"Výsledok násobenia je: "& a*b &Chr(10)&"Výsledok delenia je: 
"& a/b REM výstup na obrazovku 
 End Sub

Prvý vstup od užívateľa Prvý vstup od užívateľa

Druhý vstup od užívateľa Druhý vstup od užívateľa

Výsledok Výsledok

2. program: Voláme makro ako príkaz s parametrom

Sub hlavneMakro
 Dim a as Integer 
 Dim b as Integer 
 a = InputBox("Zadajte prve číslo") 
 b = InputBox("Zadajte druhe číslo")
 makroPrikazSParametrom a + b REM parametrický príkaz
 End Sub
 
 Sub makroPrikazSParametrom(vysledok) REM makro s parametrom
 MsgBox "Výsledok: "& vysledok
 End Sub

Vstup od užívateľa Vstup od užívateľa

Vstup od užívateľa Vstup od užívateľa

Výsledok Výsledok

Rozbor obidvoch makier: V prvom programe sa vykoná najprv makro s príkazom. Následne sa vykoná druhé makro (procedúra) definované ako príkaz. Zvyšok je už jasný.

Zaujímavejšia situácia nastáva v druhom programe pri  definovaní parametru. Parameter je v tomto prípade sčítanie dvoch premenných (čísel) zadaných užívateľom. Druhé makro s týmto argumentom ďalej pracuje.

Predávanie premenných medzi makrami

Môžu si makra vymieňať premenné? Áno, už pri písaní makra ako príkaz s argumentom ste mali tu česť.

V programovaní makier pod LibreOffice poznáme dve typy predávania premenných. Pomocou hodnoty a odkazu (referencia).

3. program: Predanie pomocou hodnoty

Sub volajuceMakro
 Sprava1 = "Práve odbilo "
 Sprava2 = " hodín" 
 Cas = 10
 VolaneMakro(Sprava1, Sprava2, Cas)
 MsgBox Sprava1 & Cas & Sprava2
 End Sub
 
 Sub VolaneMakro(ByVal Spr1, ByVal Spr2, ByVal Cs) REM predanie pomocou hodnoty
 Spr1 = "Zachviľu je "
 Spr2 = " hodín"
 Cs = 10
 End Sub

Výsledok Výsledok

Rozbor makra: Vo volajúcom makre nastavíme dané hodnoty a následne ich predáme druhému makru.

Čo sa stane s premennou, ktorá sa predáva z makra do makra? Premenná sa skopíruje a pri volaní druhé makro získa premennú. A to pomocou magického slova ByVal. Je to predávanie pomocou hodnoty (copy/paste metóda). Avšak, síce môžeme ďalej meniť hodnotu v druhom makre, nemá to ale vplyv na zmenu hodnoty v prvom makre.

4. program: Pomocou referencie

Sub volajuceMakro
 Sprava1 = "Práve odbilo "
 Sprava2 = " hodín" 
 Cas = 10
 VolaneMakro(Sprava1, Sprava2, Cas)
 MsgBox Sprava1 & Cas & Sprava2
 End Sub
 
 Sub VolaneMakro(ByRef Spr1, ByRef Spr2, ByRef Cs) REM predanie pomocou referencie
 Spr1 = "Zachviľu je "
 Spr2 = " hodín"
 Cs = 10
 End Sub

Výsledok Výsledok

Rozbor makra: Tak ako v predošlom programe, i tu rovnako definujeme premenné a našou snahou je ich predať druhému makru. Tentoraz ale miesto predania pomocou hodnoty predávame pomocou referencie. Použijeme na to kľúčové slovo ByRef.

Druhé makro pri predávaní pomocou referencie získa prístup k hlavnej pamäte, kde je daná premenná uložená. To znamená, že následná zmena premennej je globálna.

V ďalšom diele sa pozrieme na funkcie a ešte si trochu rozpitváme takzvané povinné a nepovinné parametre.

(Jako ve škole) Průměr: 3,40 | Hodnotilo: 10
 

Přidat názor

 

Nejsou podporovány žádné značky, komentáře jsou jen čistě textové. Více o diskuzích najdete v nápovědě. Diskuzi můžete sledovat pomocí RSS kanálu.

 
EDU Trainings
Eduard Boldižár

Eduard Boldižár

Som redaktorom stránky astrotech.cz. Mám 24 rokov. Čas trávim v IT škole. Medzi moje záľuby patrí astronómia, sci-fi literatúra a programovanie.

 

Public Relations

IPv4 zastarává, i tak si však zaslouží kvalitní zabezpečení

Znáte souvislost mezi doménami a typickými IP adresami? Není od věci si uvědomit, že zatímco domény jsou určeny pro zjednodušení hledání webové stránky na internetu, IP adresy slouží primárně pro výpočetní techniku, konkrétně pro přesné vyhledání konkrétního serveru nebo počítače.

Pokračování ...


IT Systems - předplatné
 
 
woo jaw demo hz