Storitev SFDialogs.Dialog

Storitev Dialog prispeva upravljanju pogovornih oken, ustvarjenih z Basicovim Urejevalnikom pogovornih oken. Vsaka instanca trenutnega razreda predstavlja posamezno pogovorno okno, prikazano uporabniku.

tip

Pogovorno okno je lahko prikazano v modalnem ali ne modalnem načinu.


V modalnem načinu je okno prikazano in izvedba procesa makra je začasno ustavljena, dokler ni pritisnjen eden od gumbov V redu ali Prekliči. Medtem lahko dejanja uporabnika, izvedena v oknu, sprožijo določena dejanja.

V ne modalnem načinu pogovorno okno »plava« na namizju uporabnika in izvedba procesa makra se nemoteno nadaljuje. Ne modalno pogovorno okno se zapre, ko ga zaključite z metodo Terminate() ali ko se seja LibreOffice konča. Gumb za zapiranje okna v ne modalnih pogovornih oknih ni aktivno.

Po eksplicitni prekinitvi pogovorno okni izgine iz pomnilnika.

tip

Storitev SFDialogs.Dialog je tesno povezana s storitvijo SFDialogs.DialogControl.


Priklic storitve in raba

Storitev Dialog prikličete prek metode CreateScriptService. Zahteva tri položajne argumente, da določite pogovorno polje, ki ga želite aktivirati:

Container: "GlobalScope" za vnaprej nameščene knjižnice ali ime okna, kot je določeno s storitvijo ScriptForge.UI. Prazen niz "" privzeto predstavlja trenutni dokument.

Library: ime (razlikuje med velikimi in malimi črkami) knjižnice, vsebovane v hranilniku. Privzeta vrednost je "Standard".

DialogName: niz, ki opredeljuje ime pogovornega okna (razlikuje med velikimi in malimi črkami).

Spodnja primera LibreOffice Basic in Python prikažeta pogovorno okno dlgConsole, ki pripada knjižnici ScriptForge v skupni rabi:


      Dim oDlg As Object, lButton As Long
      Dim Container As String, Library As String, DialogName As String
      Set oDlg = CreateScriptService("SFDialogs.Dialog", "GlobalScope", "ScriptForge", "dlgConsole")
      '... inicializacija kontrolnikov sodi semkaj ...
      lButton = oDlg.Execute()
      'Privzeti način = modalni
      If lButton = oDlg.OKBUTTON Then
      '... Obdelaj kontrolnike in opravi, kar je tu potrebno
      End If
      oDlg.Terminate()
  

Ali z uporabo Pythona:


    dlg = CreateScriptService('SFDialogs.Dialog', 'GlobalScope', 'ScriptForge', 'dlgConsole')
    # ... inicializacija kontrolnikov sodi semkaj ...
    rc = dlg.Execute()
    # Privzeti način je modalni (Modal)
    if rc == dlg.OKBUTTON:
        # ... Obdelaj kontrolnike in opravi, kar je tu potrebno
    dlg.Terminate()
  

Instanco Dialog lahko pridobite tudi prek storitve SFDialogs.DialogEvent, če je pogovorno okno nastalo s storitvijo Dialog. DialogEvent vrne instanco storitve SFDialogs.Dialog, ki je sprožila dogodek.


    Sub SomeEvent(ByRef poEvent As Object)
        Dim oDlg As Object
        Set oDlg = CreateScriptService("SFDialogs.DialogEvent", poEvent)
    End Sub
  

s Pythonom:


    def some_event(event: uno):
        dlg = CreateScriptService("SFDialogs.DialogEvent", event)
  

V prejšnjih primerih ste morda opazili, da lahko predpono "SFDialogs." izpustite, ko je to ustrezno.

Lastnosti

Ime

Samo za branje

Vrsta

Opis

OKBUTTON

Da

Integer

Vrednost = 1. Pritisnjen je bil gumb V redu.

CANCELBUTTON

Da

Integer

Vrednost = 0. Pritisnjen je bil gumb Prekliči.

Caption

Ne

String

Določite naslov pogovornega okna.

Height

Ne

Long

Določite višino pogovornega okna.

Modal

Da

Boolean

Določa, ali je pogovorno okno trenutno v izvedbi v modalnem načinu.

Name

Da

String

Ime pogovornega okna

Page

Ne

Integer

Pogovorno okno ima lahko več strani, med katerimi uporabnik napreduje po korakih. Lastnost Page predmeta Dialog določa, katera stran pogovornega okna je aktivna.

Visible

Ne

Boolean

Določa, ali je pogovorno okno vidno na namizju. Privzeto ni vidno, dokler ne izvedete metode Execute(); šele nato je vidno.

XDialogModel

Da

UNO
object

Predmet UNO, ki predstavlja model pogovornega okna. Podrobnosti si oglejte v dokumentaciji API-ja za XControlModel in UnoControlDialogModel.

XDialogView

Da

UNO
object

Predmet UNO, ki predstavlja pogled pogovornega okna. Podrobnosti si oglejte v dokumentaciji API-ja za vmesnika XControl in UnoControlDialog.

Width

Ne

Long

Določite širino pogovornega okna.


Lastnosti dogodka

note

Te lastnosti dogodka so na voljo od LibreOffice 7.2 naprej.


Vrne niz URI s sklicem na skript, ki ga je dogodek sprožil. Preberite njegovo specifikacijo v specifikaciji URI ogrodja skriptanja.

Ime

Samo za branje

Opis Basic IDE

OnFocusGained

Da

Ob pridobljeni pozornosti

OnFocusLost

Da

Ob izgubljeni pozornosti

OnKeyPressed

Da

Tipka pritisnjena

OnKeyReleased

Da

Tipka sproščena

OnMouseDragged

Da

Miška premaknjena ob pritisnjeni tipki

OnMouseEntered

Da

Miška znotraj

OnMouseExited

Da

Miška zunaj

OnMouseMoved

Da

Miška premaknjena

OnMousePressed

Da

Gumb miške pritisnjen

OnMouseReleased

Da

Gumb miške sproščen


Metode

Activate
Controls

EndExecute
Execute

Terminate


Activate

Pozornost nastavi na trenutno instanco Dialog. Vrne True, če je bilo določanje pozornosti uspešno.

To metodo kliče dogodek pogovornega okna ali kontrolnika oz. ko je pogovorno okno prikazano v ne modalnem načinu.

Skladnja:

svc.Activate(): bool

Primer:


      Dim oDlg As Object
      Set oDlg = CreateScriptService(,, "myDialog")
      oDlg.Execute()
      ' ...
      oDlg.Activate()
   

Primeri v Pythonu in LibreOffice Basicu predvidevajo, da je pogovorno okno shranjeno v knjižnici Standardno trenutnega dokumenta.


     dlg = CreateScriptService(,,'myDialog')
     dlg.Execute()
     # ...
     dlg.Activate()
   

Controls

Vrne lahko:

Skladnja:

svc.Controls(): str[0..*]

svc.Controls(controlname: str): svc

Parametri:

ControlName: ime veljavnega kontrolnika kot niz, razlikuje med velikimi in malimi črkami. Če ni podano, vrne seznam imen kontrolnikov kot ničelno polje.

Primer:


      Dim myDialog As Object, myList As Variant, myControl As Object
      Set myDialog = CreateScriptService("SFDialogs.Dialog", , "Standard", "Dialog1")
      myList = myDialog.Controls()
      Set myControl = myDialog.Controls("myTextBox")
   

     dlg = CreateScriptService('SFDialogs.Dialog','', 'Standard', 'Dialog1')
     ctrls = dlg.Controls()
     ctrl = dlg.Controls('myTextBox')
   

EndExecute

Vrne prikaz modalnega pogovornega okna in vrne argument kot vrnjeno vrednost trenutne izvedenega dejanja Execute().

EndExecute() je običajno vsebovana v obdelavi makra, ki jo proži dogodek pogovornega okna ali kontrolnika.

Skladnja:

svc.EndExecute(returnvalue: int)

Parametri:

returnvalue: vrednost, podana izvajani metodi Execute().

Primer:

Z uporabo LibreOffice Basica:


      Sub OnEvent(poEvent As com.sun.star.lang.EventObject)
          Dim oDlg As Object
          Set oDlg = CreateScriptService("SFDialogs.DialogEvent", poEvent)
          oDlg.EndExecute(ReturnValue := 25)
      End Sub
   

Z uporabo Pythona:


     from com.sun.star.lang import EventObject
     def on_event(event: EventObject):
         dlg = CreateScriptService("SFDialogs.DialogEvent", event)
         dlg.EndExecute(25)
   
tip

Zgornje omembe com.sun.star.lang.EventObject so neobvezne. Takšni zaznamki so v pomoč pri identificiranju API-ja LibreOffice.


Execute

Prikaže pogovorno okno in, če je podrejeno oz. modalno, počaka na njegovo zaprtje na strani uporabnika. Vrnjena vrednost je lahko le:

Za ne modalna pogovorna okna metoda vedno vrne 0, izvajanje makra pa se nadaljuje.

Skladnja:

svc.Execute(modal: bool = True): int

Parametri:

modal: False, če gre za glavno oz. ne-modalno okno. Privzeto = True.

Primer:

Ta primer PogovornoOkno1 v Basicu je shranjen v knjižnici Standardno trenutnega dokumenta.


      Dim oDlg As Object, lReturn As Long
      Set oDlg = CreateScriptService("SFDialogs.Dialog", , , "myDialog")
      lReturn = oDlg.Execute(Modal := False)
      Select Case lReturn
          ' ...
      End Select
   

Ta koda Python prikaže modalno pogovorno okno DlgConvert iz knjižnice Basic Euro, ki je v skupni rabi.


     dlg = CreateScriptService("SFDialogs.Dialog", 'GlobalScope', 'Euro', "DlgConvert")
     rc = dlg.Execute()
     if rc == dlg.CANCELBUTTON:
         # ...
   

Terminate

Zaključi izvajanje storitve Dialog za trenutno instanco. Vrne True, če je končanje izvajanja uspelo.

Skladnja:

svc.Terminate(): bool

Primer:

Spodnja primera v Basicu in Pythonu odpreta ne modalni pogovorni okni DlgConsole in dlgTrace. Slednji sta shranjeni v knjižnicah skupne rabe, in sicer prvi v ScriptForge, drugi pa v Access2Base. Gumbi za zapiranje pogovornega okna so onemogočeni in izrecen zaključek se izvrši ob koncu procesa, ki je v teku.

V tem primeru gumb v DlgConsole nadomešča inhibirano zapiranje okna:


     oDlg = CreateScriptService("SFDialogs.Dialog","GlobalScope","ScriptForge","DlgConsole")
     oDlg.Execute(modal:=False)
     Wait 5000
     oDlg.Terminate()
   

S Pythonom:


     from time import sleep
     dlg = CreateScriptService('SFDialogs.Dialog',"GlobalScope",'Access2Base',"dlgTrace")
     dlg.Execute(modal=False)
     sleep 5
     dlg.Terminate()
   
warning

Vsi podprogrami ali identifikatorji ScriptForge Basic s predpono podčrtaja (»_«) so rezervirani za interno uporabo. Uporabi v makrih Basic niso namenjeni.


Podprite nas!