Functie CallByName

Roept een subroutine aan met de naam.

Syntaxis:


  CallByName(object As Object, ProcedureNaam As String, Type As Integer [,arg0 [,arg1 …]])

Geretourneerde waarde:

result: Een optionele variabele voor het resultaat van de aangeroepen methode of de waarde van een eigenschap.

Parameters:

object: Een Basic module, een instantie van een ClassModule of een UNO-service met eigenschappen en/of methodes.

ProcedureNaam: De Functie, Subroutine of Eigenschap die wordt gebruikt.

CallType: Het type van de uitgevoerde actie, bijvoorbeeld 'Get', 'Let', 'Method' of 'Set'.

arg0, arg1 …: De optionele parameters van de Functie optional die als positionele argumenten worden doorgegeven.

Argumenten moeten in dezelfde volgorde vermeld worden als dat ze in de methode zijn gedefinieerd. Er zijn dus geen argumenten op sleutelwoord mogelijk.

Waarde

Beschrijving CallType

1

Method: Roept een procedure als een functie of als een subroutine aan.

2

Get: Leest een eigenschap of een variabele.

4

Let: Kent een waarde toe aan een eigenschap of een variabele.

8

Set: Kent een waarde toe aan een Object of een Variant variabele met gebruik van een referentie.


Voorbeeld:

  1. Een module Calc.Maths bevat een functie Multiply met een variabel aantal getallen.

  2. De informatie van ScriptForge.Platform.Architecture is opgehaald.

  3. De eigenschap DisplayDirectory van UNO-service com.sun.star.ui.dialogs.FilePicker is gezet op de map home van de gebruiker, de inhoud ervan wordt twee maal gelezen.


  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

Module Calc.Maths


  Option Compatible ' Module Calc.Maths
  Option Explicit
  
  Public Function Multiply(ParamArray args() As Double) As Variant
      ''' Vermenigvuldig een variabel aantal getallen '''
      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()

Help ons, alstublieft!