CallByName Function

Kalder en subrutine med dens strengnavn.

Syntaks:


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

Returværdi:

result (resultat): En valgfri variabel, der indeholder resultatet af den kaldte metode eller egenskab.

Parametre:

object (objekt): Et Basic-modul, en forekomst af et ClassModule (klassemodul) eller en UNO-tjeneste med egenskaber eller metoder.

ProcName (procedurenavn): Den funktion, Sub eller Egenskab, der bliver kaldt.

CallType: Den udførte handlings type såsom Get (hent), Let (lad), Method (metode) og Set (sæt).

arg0, arg1 …: Functionens valgfrie parametre opgivet som positionsargumenter.

Argumenter leveres i den præcis rækkefølge, der er defineret i metodesignaturen. Nøgleordsargumenter er ikke mulige.

Værdi

CallType Beskrivelse

1

Method (metode): Kalder en procedure som en funktion eller en subrutine.

2

Get (Hent): Læser et egenskabs- eller variabelindhold.

4

Let (lad): Tildeler et indhold en Property (egenskab) eller variabel et indhold.

8

Set (sæt): Tildeler et Object (objekt) eller en variable Variant (variant) en referenceværdi.


Eksempel:

  1. Et Calc.Maths-modul indeholder funktionen Multiply (multiplicer) og forventer en varierende liste over tal.

  2. ScriptForge.Platform.Architecture oplysninger er hentet.

  3. DisplayDirectory property of com.sun.star.ui.dialogs.FilePicker UNO service is set to the user home folder, its content is read twice.


  Sub CallByName_example
      Const _Method = 1, _Get = 2, _Let = 4, _Set = 8
  
      BasicLibraries.loadLibrary("Calc") ' Bruger-biblioteks.modulet 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 (modul)


  Option Compatible ' Calc.Maths (modul)
  Option Explicit
  
  Public Function Multiply(ParamArray args() As Double) As Variant
      ''' Multiplicer en variabelliste over tal '''
      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()