Obsah
Rejstřík 🔎︎

# Funkce CallByName

Zavolá podprogram zadaného názvu.

### Syntaxe:

      CallByName(object As Object, ProcName As String, CallType As Integer [,arg0 [,arg1 …]])

### Návratová hodnota:

result: Nepovinná proměnná obsahující výsledek volané metody nebo vlastnosti.

### Parametry:

object: Modul Basicu, instance modulu třídy (ClassModule) nebo služby UNO obsahující vlastnosti nebo metody.

ProcName: Funkce (Function), procedura (Sub) nebo vlastnost (Property), která se má zavolat.

CallType: Typ prováděné akce jako Get, Let, Method a Set.

arg0, arg1 …: Nepovinné parametry funkce (Function) zadané pozicí.

Argumenty je nutné zadat v přesně stejném pořadí, jako jsou definovány v signatuře metody. Není možné argumenty zadat pomocí názvu.

Hodnota | Popis parametru CallType
--- | ---
1 | Method: Zavolá proceduru jako funkci nebo podprogram.
2 | Get: Načte vlastnost nebo obsah proměnné.
4 | Let: Přiřadí obsah vlastnosti (Property) nebo proměnné.
8 | Set: Přiřadí hodnotu odkazu na objekt (Object) nebo proměnnou typu Variant.

### Příklad:

1. Z modulu Calc.Maths se zavolá funkce Multiply, která očekává různě dlouhý seznam čísel.

2. Zjistí se informace o architektuře z vlastnosti ScriptForge.Platform.Architecture.

3. Vlastnosti DisplayDirectory ze služby UNO com.sun.star.ui.dialogs.FilePicker je přiřazena hodnota domovské složky a její obsah se dvakrát přečte.

      Sub CallByName_example
          Const _Method = 1, _Get = 2, _Let = 4, _Set = 8

          BasicLibraries.loadLibrary("Calc") ' uživatelský modul Calc.Maths (knihovna.modul)
          Dim cm As Object : cm = Calc.Maths
          MsgBox CallByName(cm, "Multiply", _Method, 3, 45, 1, 89)		' 12015
          MsgBox CallByName(cm, "Multiply", _Method, 1.85e15, 44, 10^8)	' 8.14E+24

          GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
          Dim p As Object : p = CreateScriptService("ScriptForge.Platform")
          MsgBox CallByName(p, "Architecture", _Get) ' 32bit/64bit

          Dim uno As Object : uno = CreateUNOService("com.sun.star.ui.dialogs.OfficeFilePicker")
          Dim fs As Object  : fs  = CreateScriptService("ScriptForge.FileSystem")
          CallByName(uno, "DisplayDirectory", _Let, fs.HomeFolder)
          MsgBox CallByName(uno, "DisplayDirectory", _Get)
          var = CallByName(uno, "getDisplayDirectory", _Get)
      End Sub

### Modul Calc.Maths

      Option Compatible ' modul Calc.Maths
      Option Explicit

      Public Function Multiply(ParamArray args() As Double) As Variant
          ''' Vynásobí proměnlivý počet čísel '''
          Dim ndx As Integer
          If UBound(args) >= 0 Then
              Multiply = 1.0
              For ndx = 0 To UBound(args)
                  Multiply = Multiply * args(ndx)
              Next ndx
          End If
      End Function 'Calc.Maths.Multiply()

Související témata

Příkaz Call

Služba ScriptForge.Platform

Příkaz Option Compatible

Příkaz Option ClassModule