Funzione CallByName

Richiama una subroutine in base al suo nome stringa.

Sintassi:

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

Valore restituito:

result: variabile opzionale che contiene il risultato del metodo o della proprietà richiamata.

Parametri:

object: modulo Basic, istanza ClassModule o servizio UNO contenente proprietà e metodi.

ProcName: la funzione (Function), Sub o la proprietà (Property) richiamata.

CallType: il tipo di azione eseguita, come Get, Let, Method e Set.

arg0, arg1 …: parametri opzionali della funzione (Function) passati come argomenti posizionali.

Gli argomenti sono forniti nell'identico ordine definito nella firma del metodo. Gli argomenti per parola chiave non sono consentiti.

Valore

Descrizione di CallType

1

Method: chiama una procedura come funzione o subroutine.

2

Get: legge il contenuto di una proprietà o di una variabile.

4

Let: assegna un contenuto a una proprietà (Property) o a una variabile.

8

Set: assegna un valore di riferimento a una variabile di tipo Object o Variant.


Esempio:

  1. Un modulo Calc.Maths contiene una funzione Multiply che prevede un elenco variabile di numeri.

  2. Vengono recuperate le informazioni ScriptForge.Platform.Architecture.

  3. La proprietà DisplayDirectory del servizio UNO com.sun.star.ui.dialogs.FilePicker è impostata sulla cartella home dell'utente e il relativo contenuto viene letto due volte.

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

    BasicLibraries.loadLibrary("Calc") ' Calc.Maths user 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

Modulo Calc.Maths

Option Compatible ' Modulo Calc.Maths
Option Explicit

Public Function Multiply(ParamArray args() As Double) As Variant
    ''' Moltiplica un elenco variabile di numeri '''
    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()

Sosteneteci!