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:


  [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
tip

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()


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

Argumenty zadané pozicí nebo klíčovým slovem

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.

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!