Функция 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()

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