Sumário

# Serviço ScriptForge.Services

O principal objetivo do módulo Services é prover acesso ao método CreateScriptService, o qual pode ser chamado em scripts de usuário para instanciar serviços que são implementados usando o framework ScriptForge.

Na terminologia do ScriptForge um serviço é uma coleção de métodos e propriedades que podem ser usados para um propósito comum. Por exemplo, o serviço String fornece métodos para manipular strings e o serviço FileSystem permite o manuseio de arquivos e pastas.

O módulo Services da biblioteca ScriptForge fornece métodos adicionais que são usados tanto internamente para registrar serviços disponíveis como por desenvolvedores interessados em estender as funcionalidades do ScriptForge ao adicionar novos serviços. O único método relevante para scripts de usuário é CreateScriptService.

## CreateScriptService

Este método é usado para instanciar um serviço ScriptForge então pode ser chamado em scripts de usuário.

O valor retornado é um objeto Basic ou Nothing se algum erro ocorreu.

### Sintaxe:

svc.CreateScriptService(service: str, [arg0: any] ...): svc

### Parâmetros:

service: Nome do serviço identificado como uma string no formato "biblioteca.serviço":

- A biblioteca se refere a uma biblioteca Basic que deve existir em GlobalScope. O valor padrão é "ScriptForge".

- O serviço é um dos serviços registrados pela biblioteca ScriptForge.

arg0, ...: Lista de argumentos requeridos para invocar o serviço.

Se o primeiro argumento se referir a um gerenciador de eventos, então arg0 é obrigatório e deve ser o objeto UNO que representa o evento passado como argumento para a macro.

### Exemplo:

##### Em Basic

        GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
        ' A ser feito apenas uma vez
        Dim svc As Object
        Set svc = CreateScriptService("Array")
        ' Refere-se ao serviço "ScriptForge.Array" ou SF_Array
        Set svc = CreateScriptService("ScriptForge.Dictionary")
        ' Retorna uma instância com um novo dicionário vazio; "ScriptForge" é opcional
        Set svc = CreateScriptService("SFDocuments.Calc")
        ' Refere-se ao serviço Calc, implementado na biblioteca associada SFDocuments
        Set svc = CreateScriptService("Timer", True)
        ' Retorna uma instância do serviço Timer e é iniciado imediatamente
        Set svc = CreateScriptService("SFDocuments.DocumentEvent", oEvent)
        ' Refere-se ao serviço DocumentEvent implementado na biblioteca associada SFDocuments
        ' Retorna a instância do serviço Document que disparou o evento

##### Em Python

        from scriptforge import CreateScriptService
        svc = CreateScriptService("Array")
        svc = CreateScriptService("ScriptForge.Dictionary")
        svc = CreateScriptService("SFDocuments.Calc")
        svc = CreateScriptService("Timer", True)
        svc = CreateScriptService("SFDocuments.DocumentEvent", oEvent)

Scripts em Python suportam argumentos de palavra-chave ao chamar o método CreateScriptService. O exemplo abaixo ilustra esse conceito ao instanciar os serviços Timer e Document usando argumentos de palavra-chave.

        from scriptforge import CreateScriptService
        # Timer
        my_timer = CreateScriptService("Timer", start = True)
        # Document
        my_doc = CreateScriptService("Document", windowname = "some_file.ods")

Para facilitar o desenvolvimento de scripts Python, a biblioteca ScriptForge disponibiliza o serviço Basic que permite que scripts Python executem métodos nativos da linguagem Basic com a mesma sintaxe e significado de suas funções homônimas em Basic.

O exemplo a seguir cria uma instância do serviço Basic e chama o método MsgBox, o qual é equivalente à função MsgBox disponível em Basic:

        from scriptforge import CreateScriptService
        bas = CreateScriptService("Basic")
        bas.MsgBox("Hello World!")

Note que o serviço Basic deve ser instanciado em scripts Python usando o método CreateScriptService.

Todas as rotinas ou identificadores do ScriptForge em Basic que possuem o caractere "_" como prefixo são reservadas para uso interno. Elas não devem ser usadas em macros escritas em Basic ou em Python.

Tópicos relacionados

Serviço ScriptForge.Basic

Instrução Set

Especificador GlobalScope