Tjenesten ScriptForge.Services

Biblioteket ScriptForge er bygget pĂĄ en udvidelig samling af sĂĄkaldte "Services".
Denne samling er implementeret som kategorier i Basic.biblioteker eller Python-moduler:

  1. standard-biblioteket ScriptForge leveret med LibreOffice

  2. et antal "tilknyttede" biblioteker ogsĂĄ leveret med LibreOffice

  3. enhver brugers/bidragsyders LibreOffice-udvidelse, der ønsker at passe ind i de samme rammer

En service (tjeneste) er en samling af egenskaber eller metoder, som implementerer tjenesten.

tip

For forfatteren til et brugerskript kan en tjeneste enten være et module (modul) i et bibliotek eller en instance (forekomst) af et klassemodul.


En hændelseshåndtering er et skript, der er indeholdt i en bibliotek, som binder en hændelse, der udløser en makro – sædvanligvis defineret med menuen Funktioner ▸ Tilpas – til den berørte tjeneste.

tip

Hvis flere dokumenter eksempelvis udløser den samme makro, når de hentes, kan det være nyttigt at vide, hvilket dokument, der denne gang udløste makroen. Det er her, hændelseshåndteringen gør nytte.


De følgende metoder udgør kernen i konstruktionen ScriptForge:

tip

Konventionelt kan tjenesterne String (streng), Array (matrix) og Exception (undtagelse) kaldes direkte som henholdsvis SF_String, SF_Array and SF_Exception.


Tjenesten List of Methods in the Services (Liste over metoder i tjenesterne)

CreateScriptService

RegisterScriptServices
RegisterService

RegisterEventManager


CreateScriptService

FĂĄ adgang til en af tjenesterne i et bibliotek for at benytte et brugerskript.
Den returnerede værdi er et basic-objekt eller Nothing (ingenting), hvis der skete en fejl.

En tjeneste kan forstĂĄs som enten:

Syntaks:


       CreateScriptService(Service As String, [arg0, ...] As Variant) As Variant
      

Parametre:

Service (tjeneste): Navnet pĂĄ den tjeneste, der er defineret som "library.service" (bibliotek.tjeneste).
Biblioteket er et Basic-bibliotek, der må findes i GlobalScope (global rækkevide). Standardværdien er "ScriptForge".
Tjenesten er en af de tjenester, der er registreret af biblioteket ved hjælp af metoden RegisterScriptServices() (Registrer scripttjenester()).

arg0, ...: En liste over argumenter, der kræves af den kaldte tjeneste.
Hvis det første argument henviser til en hændelseshåndtering, er arg0 obligatorisk og skal være det UNO-objekt, der repræsenterer den hændelse, der blev givet som argument til brugermakroen.

Eksempel:


        GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
        ' Skal gøres en gang
        Dim svc As Object
        Set svc = CreateScriptService("Array")
        ' Henviser til tjenesten "ScriptForge.Array" eller SF_Array
        Set svc = CreateScriptService("ScriptForge.Dictionary")
        ' Returnerer en ny tom klasseforekomst af en ordbog; "ScriptForge."er valgfri
        Set svc = CreateScriptService("SFDocuments.Calc")
        ' Refererer til den Calc-tjeneste, der er implementeret i det tilknyttede SFDocuments-bibliotek
        Set svc = CreateScriptService("Timer", True)
        ' Returnerer en klasseforekomst Timer, der starter øjeblikkelig
        Set svc = CreateScriptService("SFDocuments.DocumentEvent", oEvent)
        ' Refererer til tjenesten DocumentEvent (dokumenthændelse), der er implementeret i det tilknyttede SFDocuments-bibliotek
        ' Returnerer den forekomst af klassen Document, der udløste hændelsen
     

RegisterScriptServices

Ved at udføre en serie af kald på RegisterService() (Registrer tjenester) og RegisterEventManager() (Registrer hændelseshåndtering), metoden RegisterScriptServices() (Registrer scripttjenester()) inddrager et bibliotek i konstruktionen ScriptForge.
Hver bibliotek, der vedrører konstruktionen skal implementere sin egen version af denne metode.

warning

Metoden skal lagres i et Basic-standardmodul – som modsætning til et klassemodul.


En tjeneste er enten:


          GlobalScope.LibraryName.ModuleName ' Objekt
          "LibraryName.ModuleName.FunctionName" ' Streng
   

Eksempel:


      Public Sub RegisterScriptServices()
      ' To be stored in library = myLibrary
          With GlobalScope.ScriptForge.SF_Services
              .RegisterService("myService1", GlobalScope.myLibrary.myModule)
              ' Henvis til et Basic-standardmodul, der implementerer tjenesten som et sæt metoder
              .RegisterService("myService2", "myLibrary.someModule.someFunction")
              ' Funktionen bør returnere en forekomst af et Basic-objektklasse, der implementerer tjenesten
              ' ...
          End With
      End Sub
   

NĂĄr et brugerskript indeholder et udtryk som for eksempel:

Set myServ = CreateScriptService("myLibrary.myService1")


ScriptForge udfører disse opgaver:

  1. hent biblioteket myLibrary, når det er nødvendigt

  2. kald metoden RegisterScriptServices (Registrer scripttjenester) for at hente listen over tjenester i myLibrary (mit bibliotek) ind i hukommelsen

  3. initialiser variablen myServ (min server) med den givne tjeneste

RegisterService

Metoden returnerer True (sand), hvis parret navn-værdi, der blevet givet som argument, kunne registreres med succes.

Syntaks:


      GlobalScope.ScriptForge.SF_Services.RegisterService(ServiceName As String, ServiceReference As Variant) As Boolean
   

Parametre:

ServiceName (tjenestens navn): Tjenestens navn som en streng med Store og små bogstaver. Navnet skal være unikt.

ServiceReference (tjeneste-reference): En tjeneste-reference er enten:


          GlobalScope.LibraryName.ModuleName ' Objekt
          "LibraryName.ModuleName.FunctionName" ' Streng
   

Eksempel:


          With GlobalScope.ScriptForge.SF_Services
              .RegisterService("myService1", GlobalScope.myLibrary.myModule)
              ' Henvis til et Basic-standardmodul, der implementerer tjenesten som et sæt metoder
              .RegisterService("myService2", "myLibrary.someModule.someFunction")
              ' Funktionen bør returnerere en forekomst af en Basic objektklasse, der implementerer tjenesten
              ' ...
          End With
   

RegisterEventManager

Metoden returnerer True (sand), hvis parret navn-værdi givet som argument kunne registreres med succes.

Syntaks:


      GlobalScope.ScriptForge.SF_Services.RegisterEventManager(ServiceName As String, ServiceReference As String) As Boolean
   

Parametre:

ServiceName (tjenestenavn): Tjenestens navn som en streng med både Stort og småt. Navnet skal være unikt.

ServiceReference :(tjeneste-reference) En streng, der betegner den funktion, der skal udføres for at hente en forekomst af tjenesten. Det er faktisk den funktion, der indeholder nøgleordet New (Ny) i udtrykket Set (sæt), der opretter forekomsten:

    "LibraryName.ModuleName.FunctionName" ' String

Eksempel:


          With GlobalScope.ScriptForge.SF_Services
              .RegisterEventManager("myEventMgr", "myLibrary.someModule.someFunction")
              ' Funktionen bør returnerer en forekomst af en Basic-objektklasse, der implementierer tjenesten
              ' ...
          End With
  
warning

Alle ScriptForge Basic-rutiner eller identifikatorer, som indledes med et understregningstegn "_" er reserveret til internt brug. De er ikke beregnet til brug i Basic-makroer.


Støt os venligst!