Contenuto

# Funzione CallByName

Richiama una subroutine in base al suo nome stringa.

### Sintassi:

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

### Tipo di ritorno:

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 il riferimento al valore di 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()

Argomenti correlati

Istruzione Call

Servizio ScriptForge.Platform

Istruzione Option Compatible

Opzione ClassModule

Sostienici!