Função CallByName

Chama uma sub-rotina pelo seu nome em cadeia de caracteres.

Sintaxe:


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

Tipo de retorno:

result: Uma variável opcional que contém o resultado do método ou da propriedade chamada.

Parâmetros:

objeto: Um módulo Basic, uma instância de ClassModule ou um serviço UNO que contém propriedades ou métodos.

ProcName: A Função, Sub ou Propriedade que está a ser chamada.

CallType: O tipo de ação realizada, como Get, Let, Method e Set.

arg0, arg1 …: Os parâmetros opcionais da função, fornecidos como argumentos posicionais.

Os argumentos são fornecidos exatamente na mesma ordem definida na assinatura do método. Não é possível utilizar argumentos-chave.

Valor

Descrição CallType

1

Método: Chama um procedimento como uma função ou uma sub-rotina.

2

Obter: Lê o conteúdo de uma propriedade ou variável.

4

Let: Atribui um valor a uma Propriedade ou a uma variável.

8

Set: Atribui um valor de referência a uma variável Object ou Variant.


Exemplo:

  1. Um módulo Calc.Maths contém uma função Multiply que aceita uma lista variável de números.

  2. São recuperadas as informações relativas a ScriptForge.Platform.Architecture.

  3. A propriedade DisplayDirectory do serviço com.sun.star.ui.dialogs. FilePicker está definida para a pasta pessoal do utilizador, o seu conteúdo é lido duas vezes.


  Sub CallByName_example
      Const _Method = 1, _Get = 2, _Let = 4, _Set = 8
  
      BasicLibraries.loadLibrary("Calc") ' Módulo da biblioteca de utilizador 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

Módulo Calc.Maths


  Opção Compatível ' Módulo Calc.Maths
  Option Explicit
  
  Public Function Multiply(ParamArray args() As Double) As Variant
      ''' Multiplicar uma lista variável de números '''
      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()
Necessitamos da sua ajuda!

Necessitamos da sua ajuda!