Použití procedur, funkcí a vlastností

Následující část popisuje základní použití procedur, funkcí a vlastností v jazyce LibreOffice Basic.

note

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.


note

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.

Předávání proměnných procedurám, funkcím nebo vlastnostem

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:


  SubName(Value1, 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, Parameter2,...)

Vlastnosti spojují syntaxi procedur a funkcí. Vlastnost 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
tip

Proceduru, funkci nebo vlastnost je také možné volat plně kvalifikovaným názvem.
Knihovna.Modul.Makro()
Například makro Autotext z knihovny Gimmicks zavoláte jako:
Gimmicks.AutoText.Main()


Předávání proměnných hodnotou nebo odkazem

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ý.

Definování nepovinných parametrů

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

Viditelnost proměnných

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.

Deklarace proměnných mimo Sub, Function nebo 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.

Příklad pro soukromé proměnné

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

Uložení obsahu proměnné po ukončení Sub, Function nebo Property


  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.

Určení typu návratové hodnoty pro Function nebo 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

Podpořte nás!