Nápověda LibreOffice 24.8
Následující část popisuje základní použití procedur, funkcí a vlastností v jazyce LibreOffice Basic.
Když vytvoříte nový modul, LibreOffice Basic automaticky vloží Sub nazvaný „Main“. Tento výchozí název nemá nic společného s pořadím nebo počátečním stavem projektu v LibreOffice Basic. Tuto proceduru je možné bez obav přejmenovat.
Názvů veřejných proměnných, procedur, funkcí a vlastností se týkají jistá omezení. Nelze použít stejný název, jaký má některý modul téže knihovny.
Procedury (Sub), funkce (Function) a vlastnosti (Property) pomáhají udržovat strukturu programu rozdělenou na logické celky.
Jednou z výhod procedur, funkcí a vlastností je to, že již jednou napsané části kódu plnící určité úkoly je možné využít i v jiných projektech.
Proměnné lze předávat procedurám, funkcím i vlastnostem. Příkazy Sub, Function nebo Property musí být deklarovány tak, aby očekávaly parametry:
Sub SubName(Parameter1 As TYPENAME, Parameter2 As TYPENAME,...)
' místo pro vlastní kód
End Sub
Sub zavoláte pomocí následující syntaxe:
[Call] SubName( [Parameter1:=]Value1, [Parameter2:=]Value2, ...)
Parametry předané Sub musí odpovídat těm, které jsou určeny v deklaraci Sub.
Stejný postup platí i pro Function. Navíc funkce vždy vrací výsledek. Ten je definován tak, že se názvu funkce přiřadí výsledná hodnota:
Function FunctionName(Parameter1 As TYPENAME, Parameter2 As TYPENAME,...) As TYPENAME
' místo pro vlastní kód
FunctionName=Result
End Function
Function zavoláte pomocí následující syntaxe:
Variable = FunctionName( [Parameter1:=]Value1, [Parameter2:=]Value2, ...)
Vlastnosti spojují syntaxi procedur a funkcí. Property obvykle vyžaduje jeden parametr.
Private _IsApproved As TYPENAME
Property Get IsApproved As TYPENAME
' místo pro vlastní kód
IsApproved = some_computation
End Property
Property Let IsApproved(value As TYPENAME)
' místo pro vlastní kód
_IsApproved = computed_value
End Property
Property zavoláte pomocí následující syntaxe:
var = IsApproved
IsApproved = some_value
Proceduru, funkci nebo vlastnost je také možné volat plně kvalifikovaným názvem.
[Volání] Knihovna.Modul.Makro(), kde Volání je nepovinné.
Například makro Autotext z knihovny Gimmicks zavoláte jako:
Gimmicks.AutoText.Main()
Parametry lze proceduře, funkci nebo vlastnosti předat buď odkazem, nebo hodnotou. Pokud není určeno jinak, předává se parametr vždy odkazem. To znamená, že Sub, Function a Property mohou obdrženou hodnotu číst i měnit.
Pokud chcete předat parametr hodnotou, vložte před parametr při volání Sub, Function nebo Property klíčové slovo ByVal Například:
Function ReadOnlyParms(ByVal p2, ByVal p2)
' místo pro vlastní kód
End Function
result = ReadOnlyParms(parm1, parm2)
V tomto případě nemůže Function změnit původní obsah parametru, protože získá jen jeho aktuální hodnotu a ne parametr samotný.
Pro funkce, procedury nebo vlastnosti je možné definovat nepovinné parametry. Například:
Sub Rounding(number, Optional decimals, Optional format)
' místo pro vlastní kód
End Sub
Když voláte funkci nebo podprogram, můžete jejich argumenty předat pomocí pozice či názvu. Předávání pomocí pozice znamená prostý výpis argumentů v pořadí, ve kterém jsou ve funkci nebo podprogramu definovány. Předávání pomocí názvu vyžaduje, aby byl před argumentem uveden název odpovídajícího parametru následovaný dvojtečkou a znaménkem je rovno (:=). Argumenty s klíčovým slovem se mohou objevovat v jakémkoliv pořadí. Příklady naleznete u popisu funkce Basicu Replace().
Potřebujete-li předat méně parametrů, použijte klíčová slova. Předávání hodnot pro méně parametrů pomocí pozic by znamenalo, že byste zadávali hodnoty pro všechny parametry před požadovaným bez ohledu na to, zda jsou povinné, nebo nikoli. Díky tomu by se hodnoty nacházely na správných pozicích. Pokud předáváte parametry pomocí názvu - za použití argumentů s klíčovými slovy - můžete všechny ostatní argumenty vynechat.
Proměnná definovaná v rámci Sub, Function nebo Property zůstává platná jen do ukončení procedury. Jedná se o takzvanou „lokální“ proměnnou. V mnoha případech potřebujete, aby proměnná platila ve všech procedurách, ve všech modulech všech knihoven nebo po ukončení Sub, Function či Property.
Global VarName As TYPENAME
Proměnná je platná, dokud neukončíte relaci LibreOffice.
Public VarName As TYPENAME
Proměnná je platná ve všech modulech.
Private VarName As TYPENAME
Proměnná je platná pouze v tomto modulu.
Dim VarName As TYPENAME
Proměnná je platná pouze v tomto modulu.
Soukromé proměnné nastavíte jako soukromé v rámci modulů pomocí CompatibilityMode(True).
' ***** Module1 *****
Private myText As String
Sub initMyText
myText = "Ahoj"
Print "V modulu 1 : ", myText
End Sub
' ***** Module2 *****
'Option Explicit
Sub demoBug
CompatibilityMode( True )
initMyText
' Vrátí prázdný řetězec
' (nebo v případě Option Explicit vyvolá chybu)
Print "Teď v modulu 2 : ", myText
End Sub
Static VarName As TYPENAME
Proměnná si zachová hodnotu až do příštího spuštění Function, Sub nebo Property. Deklaraci je nutné uvést v rámci příkazu Sub,Function či Property.
Chcete-li definovat typ návratové hodnoty funkce nebo vlastnosti, přidejte podobně jako u proměnné za název funkce znak typové deklarace nebo na konec seznamu parametrů typ označený As a odpovídajícím datovým typem. Například:
Function WordCount(WordText As String) As Integer