Contenuto
Indice 🔎︎

# Servizio ScriptForge.Services

Lo scopo principale del modulo Services è quello di fornire l'accesso al metodo CreateScriptService, che può essere chiamato negli script dell'utente per istanziare servizi implementati usando il framework ScriptForge.

Nella terminologia di ScriptForge un servizio è una raccolta di metodi e proprietà utilizzabili per una finalità comune. Per esempio, il servizio String fornisce metodi per la manipolazione della stringhe, mentre il servizio FileSystem consente la manipolazione di file e cartelle.

Il modulo Services della libreria ScriptForge fornisce metodi aggiuntivi da usare sia internamente, per registrare i servizi disponibili, o dagli sviluppatori interessati a estendere ScriptForge creando nuovi servizi. L'unico metodo rilevante per gli script degli utenti è CreateScriptService.

## CreateScriptService

Questo metodo istanzia un servizio ScriptForge in modo da poterlo richiamare negli script utente.

Il valore restituito è un oggetto Basic, o Nothing se si verifica un errore.

### Sintassi:

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

### Parametri:

service: il nome del servizio identificato da un stringa nel formato "libreria.servizio":

- La libreria è una libreria di Basic che deve esistere in GlobalScope. Il valore predefinito è "ScriptForge".

- Il servizio è uno dei servizi registrati dalla libreria ScriptForge.

arg0, ...: l'elenco di argomenti richiesti dal servizio invocato.

Se il primo argomento si riferisce ad un gestore di eventi, l'arg0 è obbligatorio e deve essere un oggetto UNO che rappresenta l'evento passato come argomento alla macro dell'utente.

### Esempio:

##### In Basic

        GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
        'Da eseguire una volta
        Dim svc As Object
        Set svc = CreateScriptService("Array")
        'Fa riferimento al servizio "ScriptForge.Array" o SF_Array
        Set svc = CreateScriptService("ScriptForge.Dictionary")
        'Restituisce una nuova istanza alla classe di un nuovo dizionario vuoto; "ScriptForge." è opzionale
        Set svc = CreateScriptService("SFDocuments.Calc")
        'Fa riferimento al servizio Calc, implementato nella libreria associata SFDocuments
        Set svc = CreateScriptService("Timer", True)
        'Restituisce un'istanza della classe Timer che si avvia immediatamente
        Set svc = CreateScriptService("SFDocuments.DocumentEvent", oEvent)
        'Fa riferimento al servizio DocumentEvent implementato nella libreria associata SFDocuments
        'Restituisce un'istanza della classe Document che ha innescato l'evento

##### In 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)

Gli script in Python supportano argomenti con parole chiave per richiamare CreateScriptService. L'esempio seguente illustra questo concetto istanziando i servizi Timer e Document usando degli argomenti con parole chiave.

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

Per rendere più fluida la scrittura di script in Python, ScriptForge mette a disposizione il servizio Basic che permette agli script in Python di richiamare una raccolta di metodi con la stessa sintassi e lo stesso significato delle loro omonime funzioni native di Basic.

L'esempio seguente istanzia il servizio Basic e richiama il metodo MsgBox, equivalente alla funzione MsgBox disponibile in Basic:

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

È bene notare che il servizio Basic deve essere istanziato dagli script in Python usando il metodo CreateScriptService.

Tutte le routine e gli identificatori Basic di ScriptForge che iniziano con un carattere di sottolineatura "_" sono riservati per uso interno. Non è previsto il loro utilizzo nelle macro in Basic o negli script in Python.

Argomenti correlati

Servizio ScriptForge.Basic

Istruzione Set

Modificatore GlobalScope