Vsebina
Kazalo 🔎︎

# 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.

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.

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

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 | GetTextsFromL10N 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:

- seznam kontrolnikov, ki jih vsebuje pogovorno okno, ali

- instanco razreda kontrolnika pogovornega okna DialogControl glede na njegovo ime.

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

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:

- 0: pritisnjen gumb Prekliči

- 1: pritisnjen gumb V redu

- Sicer se je pogovorno okno ustavilo z ukazom EndExecute(), ki ga je izdalo pogovorno okno ali dogodek kontrolnika.

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:
             # ...

## GetTextsFromL10N

Zamenja vse nespremenljive nize besedila v pogovornem oknu z njihovimi prevedenimi različicami glede na instanco storitve L10N. Ta metoda prevede naslednje nize:

- Naziv pogovornega okna.

- Napisi iz naslednjih vrst kontrolnikov: gumb (Buttin), potrditveno polje (CheckBox), fiksna vrstica (FixedLine), skupinsko polje (GroupBox) in izbirni gumb (RadioButtin).

- Nespremenljivi nizi v seznamskih poljih in kombiniranih poljih.

- Namig oz. besedilo pomoči, ki se prikazuje, če se z miško ustavite nad kontrolnikom.

Metoda vrne True, če uspe.

Če želite ustvariti seznam nizov, ki jih je mogoče v pogovornem oknu prevesti, uporabite metodo AddTextsFromDialog iz storitev L10N.

### Skladnja:

svc.GetTextsFromL10N(l10n: svc): bool

### Parametri:

l10n: instanca storitve L10N, iz katere bodo pridobljeni prevedeni nizi.

### Primer:

Naslednji primer naloži prevedene nize in jih uporabi v pogovornem oknu »MyDialog«.

##### V Basicu

         oDlg = CreateScriptService("Dialog", "GlobalScope", "Standard", "MyDialog")
         myPO = CreateScriptService("L10N", "/home/user/po_files/")
         oDlg.GetTextsFromL10N(myPO)
         oDlg.Execute()

##### V Pythonu

         dlg = CreateScriptService("Dialog", "GlobalScope", "Standard", "MyDialog")
         myPO = CreateScriptService("L10N", "/home/user/po_files/")
         dlg.GetTextsFromL10N(myPO)
         dlg.Execute()

Preverite stran pomoči storitve L10N, da izveste več o ravnanju z datotekami PO in POT.

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

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

Podobne teme

Storitev SFDialogs.DialogControl

Storitev ScriptForge.UI