Nápověda LibreOffice 7.2
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, ...)
Properties combine the syntax of procedures and functions. A Property usually requires up to one parameter.
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
You can also use the fully qualified name to call a procedure, function or property:
[Call] Library.Module.Macro(), where Call is optional.
For example, to call the Autotext macro from the Gimmicks library, use the following command:
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
When you call a function or a subroutine, you may pass its arguments by position or by name. Passing by position means just listing the arguments in the order in which the parameters are defined in the function or subroutine. Passing by name requires you to prefix the argument with the name of the corresponding parameter followed by a colon and an equal sign (:=). Keyword arguments may appear in any order. Refer to Basic Replace() function for such examples.
When needing to pass less parameters, use keywords arguments. Passing values for fewer parameters by position requires to supply values for all parameters before them, optional or not. This ensures that the values are in the correct positions. If you pass the parameters by name - using keyword arguments - you may omit all other intermediate arguments.
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