Innhald
Innhaldsliste 🔎︎

# Tenesta SFDialogs.Dialog

Tenesta Dialog bidreg til handsaminga av dialogar oppretta med Basic lDialog Editor. Kvar førekomst av den nåverande klassen representerer éin dialogboks som vert vist for brukaren.

Ein dialogboks kan visast i modal eller ikkje-modal modus.

I modal modus vert boksen vist og utføringa av makroprosessen vert utsett til ein av OK- eller Avbryt -knappane vert trykt på. I mellomtida kan brukarhandlingar utført på boksen løysa ut spesifikke handlingar.

I ikkje-modal modus er dialogvindauget «flytande» på brukarskrivebordet, og køyringa av makroprosessen held fram som normalt. Eit ikkje-modalt dialogvindauge vert lukka når den vert avslutta med Terminate()-metoden eller når LibreOffice-økta vert avslutta. Lukkeknappen for vindauget er inaktiv i ikkje-modale dialogvindauge.

Eit dialogvindauge forsvinn frå minnet etter eksplisitt avslutning.

Tenesta SFDialogs.Dialog er i nært slektskap med tenesta SFDialogs.DialogControl.

## Oppkall og bruk av tenester

Tenesta Dialog vert kalla opp med metoden CreateScriptService. Ho krev tre posisjons-argument for å opna dialogvindauget.

Container: "GlobalScope" for førehandsinstallerte bibliotek eller eit vindaugenamn som er definert av tenesta ScriptForge.UI. Standardverdien tom streng "" står for det gjeldande dokumentet.

Bibliotek: Biblioteknamn (som skil mellom store og små bokstavar) finst i behaldaren. Standardverdien er «Standard».

Dialognamn: Ein streng som skil mellom store og små bokstavar, gjev dialogvindauget.

PRODUCTNAME Basic- og Python-eksempla nedanfor viser dialogvindauget dlgConsole, som høyrer til det delte biblioteket ScriptForge:

          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")
          ' … initialisering av kontrollelementa vert skrivne her…
          lButton = oDlg.Execute()
          ' Standardmodus = Modal
          If lButton = oDlg.OKBUTTON Then
          ' … Handsama kontrollelementa og gjera det som trengst her
          End If
          oDlg.Terminate()

Eller med Python:

        dlg = CreateScriptService('SFDialogs.Dialog', 'GlobalScope', 'ScriptForge', 'dlgConsole')
        ' … initialisering av kontrollelementa vert skrivne her…
        rc = dlg.Execute()
        ' Standardmodus er Modal
        if rc == dlg.OKBUTTON:
            ' … Handsama kontrollelementa og gjera det som trengst her
        dlg.Terminate()

Alternativt kan ein førekomst av Dialog hentast via tenesta SFDialogs.DialogEvent, viss dialogvindauget vart initiert med tenesta Dialog. DialogEvent returnerer den førekomsten av tenesta SFDialogs.Dialog som utløyste hendinga.

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

Med Python

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

Merk at i dei tidlegare eksempla kan prefikset "SFDialogs." sløyfast når det passar best.

## Eigenskapar

Namn | Skriveverna | Type | Beskriving
OKBUTTON | Ja | Integer | Verdi = 1. Der vart trykt på ein OK-knapp.
CANCELBUTTON | Ja | Integer | Verdi = 0. Der vart trykt på ein Avbryt-knapp.
Caption | Nei | String | Spesifiser tittelen på dialogvindauget.
Height | Nei | Long | Spesifiser høgda på dialogvindauget.
Modal | Ja | Boolean | Viser om dialogvindauget vert køyrd i modal-modus.
Name | Ja | String | Namnet på dialogvindauget
Page | Nei | Integer | Eit dialogvindauge kan ha fleire sider som brukaren kan gå gjennom steg for steg. Kva side i dialogvindauget som er gjeldande, vert definert i sideeigenskapen.
Visible | Nei | Boolean | Spesifiserer om dialogvindauget er synleg på skrivebordet. Som standard er han ikkje synleg før etter at metoden Execute() er utført.
XDialogModel | Ja | UNO object | Det UNO-objektet som representer modellen for dialogvindauget. Sjå detaljert informasjon i XControlModel og UnoControlDialogModel i dokumentasjonen for API-en ( Application Programming Interface).
XDialogView | Ja | UNO object | Det UNO-objektet som representer modellen for dialogvindauget. Sjå detaljert informasjon i XControlModel og UnoControlDialogModel i dokumentasjonen for API-en ( Application Programming Interface).
Width | Nei | Long | Spesifiser breidda på dialogvindauget.

## Hendingseigenskapar

Returnerer ein URI-streng med referanse til skriptet som utløyste hendinga. Sjå spesifikasjonen i spesifikasjonane for skript-ramma.

Skriv inn eit namn for objektet | Skriveverna | Basic IDE-beskriving
OnFocusGained | Ja | Når han får fokus
OnFocusLost | Ja | Når han mistar fokus
OnKeyPressed | Ja | Ved tastetrykk
OnKeyReleased | Ja | Etter tastetrykk
OnMouseDragged | Ja | Muserørsle medan ein tast er trykt
OnMouseEntered | Ja | Mus innanfor
OnMouseExited | Ja | Mus utanfor
OnMouseMoved | Ja | Mus flytt
OnMousePressed | Ja | Museknapp trykt ned
OnMouseReleased | Ja | Museknapp sloppe

| Metodar |
Activate Controls | EndExecute Execute | GetTextsFromL10N Terminate

## Activate

Set fokus på det gjeldande dialogvindauget. Returner Sann viss fokuseringa lukkast.

Denne metoden vert kalla opp frå eit dialogvindauge, ei kontrollhending eller når det vert vist eit dialogvindauge i ikkje-modal modus.

### Syntaks:

svc.Activate(): bool

### Eksempel:

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

Både Python- og LibreOffice-Basic-eksempla går ut frå at dialogvidauget er lagra i Standard-biblioteket i det gjeldande dokument.

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

## Controls

Returner anten:

- lista over kontrollelement som er i dialogvidauget

- ein DialogControl-klasseførekomst basert på namnet

### Syntaks:

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

svc.Controls(controlname: str): svc

### Parametrar:

KontrolNamn: Eit gyldig kontrollnamn som ein streng (som skil mellom små og store bokstavar). Viss denne manglar vert lista over kontrollnamn returnert som ei nullbasert matrise.

### Eksempel:

          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

Avsluttar visinga av eit modalt dialogvindauge og returnerer argumentet som returverdi for den gjeldande køyrehandlinga Execute ().

EndExecute() er til vanleg å finna i handsaminga av ein makro som er utløyst av ei hending i eit dialogvindauge eller eit kontrollelement.

### Syntaks:

svc.EndExecute(returnvalue: int)

### Parametrar:

returverdi: Verdien som vert sendt til den køyrande Execute()-metoden.

### Eksempel:

Med LibreOffice Basic:

          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

Med Python:

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

Overnemnde com.sun.star.lang.EventObject er valfrie. Slike merknadar hjelper til med å identifisere LibreOffice Application Programming Interface (API).

## Execute

Viser dialogvindauget og ventar, når modal, på avslutning av brukaren. Den returnerte verdien er anten:

- 0: knappen Avbryt er trykt

- 1: knappen OK er trykt

- Elles vart dialogvindauget stoppa med eit EndExecute()-uttrykk sendt frå ei hending i eit dialogvindauge eller eit kontrollelement

For ikkje-modale dialogvindauge returnerer metoden alltid 0 og utføringa av makroen held fram-.

### Syntaks:

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

### Parametrar:

modal: Usann ved eit ikkje-modalt dialogvindauge. Standard = Sann .

### Eksempel:

I dette Basic-eksempelet er dialogvindauget myDialog lagra i det gjeldande dokumentet sitt Standard-bibliotek.

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

Denne Python-koden viser det modale dialogvindauget DlgConvert i det delte Basic-biblioteket DlgConvert.

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

## GetTextsFromL10N

Replaces all fixed text strings in a dialog by their translated versions based on a L10N service instance. This method translates the following strings:

- The title of the dialog.

- The caption of the following control types: Button, CheckBox, FixedLine, FixedText, GroupBox and RadioButton.

- Static strings in ListBoxes and ComboBoxes.

- The tooltip or help text displayed when the mouse hovers over the control.

The method returns True if successful.

To create a list of translatable strings in a dialog use the AddTextsFromDialog method from the L10N service.

### Syntaks:

svc.GetTextsFromL10N(l10n: svc): bool

### Parametrar:

l10n: A L10N service instance from which translated strings will be retrieved.

### Eksempel:

The following example loads translated strings and applies them to the dialog "MyDialog".

##### I Basic

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

##### I Python

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

Read the L10N service help page to learn more about how PO and POT files are handled.

## Terminate

Avslutt tenesta Dialog i den gjeldande førekomsten. Returner Sann viss avslutninga lukkast.

### Syntaks:

svc.Terminate(): bool

### Eksempel:

Basic- og Python-eksempla nedanfor opnar dei ikkje-modale dialogvindauga DlgConsole og dlgTrace. Dei er lagra i dei delte biblioteka ScriptForge og Access2Base. Knappane for å lukka dialogvindauga er kopla frå, og eksplisitt avslutning vert utført på slutten av ein køyrande prosess.

I dette eksempelet erstattar ein knapp i DlgConsole hemma lukking av vindauget:

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

Med Python:

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

Alle ScriptForge Basic-rutinane og -identifikatorane som vert innleidde med understrek «_» er reserverte for internt bruk. Dei er ikkje meint brukte i Basic-makroar.

Liknande emne

Tenesta SFDialogs.DialogControl

Tenesta ScriptForge.UI