Funkcja CallByName

Wywołuje podprogram według jego nazwy ciągu.

Składnia:


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

Zwracana wartość:

result: Opcjonalna zmienna zawierająca wynik wywoływanej metody lub właściwości.

Parametry:

object: Moduł Basic, instancja ClassModule lub usługa UNO przechowująca właściwości lub metody.

ProcName: Funkcja, Sub lub Property, która jest wywoływana.

CallType: Typ wykonywanej akcji, taki jak Get, Let, Method i Set.

arg0, arg1 …: Opcjonalne parametry Function podane jako argumenty pozycyjne.

Argumenty są dostarczane w dokładnie takiej samej kolejności, jak zdefiniowano w sygnaturze metody. Argumenty słów kluczowych nie są możliwe.

Wartość

Opis CallType

1

Method: Wywołuje procedurę jako funkcję lub podprogram.

2

Get: Odczytuje właściwość lub zawartość zmiennej.

4

Let: Przypisuje treść do Property lub zmiennej.

8

Set: Przypisuje wartość odniesienia do zmiennej Object lub Variant.


Przykład:

  1. Moduł Calc.Maths zawiera funkcję Multiply oczekującą zmiennej listy liczb.

  2. Pobierane są informacje ScriptForge.Platform.Architecture.

  3. Właściwość DisplayDirectory z usługi UNO com.sun.star.ui.dialogs.FilePicker jest ustawiona na folder domowy użytkownika, jego zawartość jest odczytywana dwukrotnie.


  Sub CallByName_example
      Const _Method = 1, _Get = 2, _Let = 4, _Set = 8
  
      BasicLibraries.loadLibrary("Calc") ' Moduł użytkownika Calc.Maths (library.module)
      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

Moduł Calc.Maths


  Option Compatible ' Moduł Calc.Maths
  Option Explicit
  
  Public Function Multiply(ParamArray args() As Double) As Variant
      ''' Pomnóż zmienną listę liczb '''
      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()

Prosimy o wsparcie!