Функция CallByName

Извиква подпрограма по името ѝ като низ.

Синтаксис:


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

Резултат:

result: незадължителна променлива, която съдържа резултата от извикания метод или свойство.

Параметри:

object: модул на Basic, екземпляр на ClassModule или услуга на UNO, която съдържа свойства или методи.

ProcName: извикваната подпрограма от тип Function, Sub или Property.

CallType: типът на извършваното действие, например Get, Let, Method и Set.

arg0, arg1 …: незадължителните параметри на подпрограмата от тип Function, дадени като позиционни аргументи.

Аргументите се подават в точно същия ред, в който са дефинирани в сигнатурата на метода. Не са възможни аргументи с ключови думи.

Стойност

Описание на стойността от тип CallType

1

Method: извикване на подпрограма като функция или процедура.

2

Get: четене на съдържанието на свойство или променлива.

4

Let: присвояване на съдържание на свойство (Property) или променлива.

8

Set: присвояване на стойност псевдоним на променлива от тип Object или Variant.


Пример:

  1. Модулът Calc.Maths съдържа функция Multiply, която очаква вариращ списък от числа.

  2. Извлича се информация от свойството ScriptForge.Platform.Architecture.

  3. На свойството DisplayDirectory на услугата на UNO com.sun.star.ui.dialogs.FilePicker се задава началната папка на потребителя, съдържанието му се чете два пъти.


  Sub CallByName_example
      Const _Method = 1, _Get = 2, _Let = 4, _Set = 8
  
      BasicLibraries.loadLibrary("Calc") ' Calc.Maths потребителска библиотека.модул
      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

Модул Calc.Maths


  Option Compatible ' Модул Calc.Maths
  Option Explicit
  
  Public Function Multiply(ParamArray args() As Double) As Variant
      ''' Произведение на вариращ списък от числа '''
      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()

Моля, подкрепете ни!