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()

Sostienici!