Obsah
Rejstřík 🔎︎

# Služba ScriptForge.Services

Hlavním účelem modulu Service je poskytovat přístup k metodě CreateScriptService, pomocí které lze v uživatelských skriptech vytvářet instance služeb implementovaných v knihovnách ScriptForge.

V terminologii knihoven ScriptForge je služba sada metod a vlastností, které lze použít ke společnému účelu. Například služba String nabízí metody pro manipulaci s řetězci, zatímco služba FileSystem umožňuje zacházet se soubory a složkami.

Modul Service knihovny ScriptForge obsahuje další metody, které jsou používány buď interně pro registraci dostupných služeb, nebo vývojáři, kteří chtějí ScriptForge rozšířit o nové služby. Jedinou metodou, která je relevantní pro uživatelské skripty, je CreateScriptService.

## CreateScriptService

Tato metoda se používá k vytvoření instance služby ScriptForge, která díky ní může být provedena v uživatelských skriptech.

Návratovou hodnotou je objekt Basicu nebo objekt Nothing, pokud nastane chyba.

### Syntaxe:

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

### Parametry:

service: Název služby jako řetězec ve formátu "knihovna.služba":

- knihovna je knihovna jazyka Basic, která musí existovat v oblasti GlobalScope. Výchozí hodnotou je "ScriptForge".

- služba je některá ze služeb zaregistrovaných knihovnou ScriptForge.

arg0, ...: Seznam argumentů vyžadovaných vytvářenou službou.

Pokud první argument odkazuje na správce událostí, poté je arg0 povinný a musí se jednat o objekt UNO představující událost, která byla předána jako argument uživatelskému makru.

### Příklad:

##### V Basicu

        GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
        ' Stačí provést jednou
        Dim svc As Object
        Set svc = CreateScriptService("Array")
        ' Odkazuje na službu "ScriptForgeArray" či SF_Array
        Set svc = CreateScriptService("ScriptForge.Dictionary")
        ' Vrátí novou, prázdnou instanci třídy slovník; část "ScriptForge." je nepovinná
        Set svc = CreateScriptService("SFDocuments.Calc")
        ' Odkazuje na službu Calc, implementovanou v připojené knihovně SFDocuments
        Set svc = CreateScriptService("Timer", True)
        ' Vrátí instanci třídy Timer, která se okamžitě spustí
        Set svc = CreateScriptService("SFDocuments.DocumentEvent", oEvent)
        ' Odkazuje na službu DocumentEvent, implementovanou v připojené knihovně SFDocuments
        ' Vrátí instanci třídy dokument, která událost spustila

##### V Pythonu

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

Ve skriptech Pythonu je možné uvést při volání metody CreateScriptService názvy argumentů. Následující příklad ukazuje jejich použití při vytváření instance služeb Timer a Document.

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

V zájmu usnadnění psaní skriptů Pythonu nabízí knihovna ScriptForge službu Basic, která umožňuje ze skriptů Pythonu volat sadu metod se stejnou syntaxí a významem, jaké mají stejnojmenné nativní funkce Basicu.

V následujícím příkladu je vytvořena instance služby Basic a zavolána metoda MsgBox, odpovídající funkci MsgBox dostupné v Basicu.

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

Mějte na paměti, že ve skriptech Pythonu musí být vytvořena instance služby Basic, a to metodou CreateScriptService.

Všechny procedury nebo identifikátory knihovny ScriptForge, které jsou uvozeny podtržítkem "_", jsou určeny pro interní použití. Není zamýšleno je používat v makrech Basicu nebo skriptech Pythonu.

Související témata

Služba ScriptForge.Basic

Příkaz Set

Specifikátor GlobalScope