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.

tip

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.

tip

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


Oppkall og bruk av tenester

Before using the Dialog service the ScriptForge library needs to be loaded or imported:

note

• Grunnleggjande makroar krev innlasting av biblioteket ScriptForge ved hjelp av denne setninga:
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")

• Python-skript krev import frå scriptforge-modulen:
from scriptforge import CreateScriptService


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

Returns a URI string with the reference to the script triggered by the event. Read its specification in the scripting framework URI specification.

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
Center
Controls

EndExecute
Execute
GetTextsFromL10N

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

Center

Centers the current dialog instance in the middle of a parent window. Without arguments, the method centers the dialog in the middle of the current window.

Returns True when successful.

Syntaks:

svc.Center(opt Parent: obj): bool

Parametrar:

Parent: An optional object that can be either …

Eksempel:

I Basic

     Sub TriggerEvent(oEvent As Object)
         Dim oDialog1 As Object, oDialog2 As Object, lExec As Long
         Set oDialog1 = CreateScriptService("DialogEvent", oEvent) ' The dialog that caused the event
         Set oDialog2 = CreateScriptService("Dialog", ...) ' Open a second dialog
         oDialog2.Center(oDialog1)
         lExec = oDialog2.Execute()
         Select Case lExec
             ...
     End Sub
  
I Python

     def triggerEvent(event: uno):
       dlg1 = CreateScriptService('DialogEvent.Dialog', event)  # The dialog having caused the event
       dlg2 = CreateScriptService('Dialog', ...)  # Open a second dialog
       dlg2.Center(dlg1)
       rc = dlg2.Execute()
       if rc is False:
         # ...
   

Controls

Returner anten:

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

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:

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

Bytar ut alle faste tekststrengar i eit dialogvindauge med den omsette versjonen basert på ein førekomst av tenesta L10N . Denne metode omsett desse strengane:

Metoden returnerer Sann viss han lukkast.

Bruk metoden AddTextsFromDialog frå tenesta L10N for å laga ei liste over strengar som kan omsetjast i eit dialogvindauge.

Syntaks:

svc.GetTextsFromL10N(l10n: svc): bool

Parametrar:

l10n: Ein førekomst av tenesta L10N som dei omsette strengane vert henta frå.

Eksempel:

Dei neste eksempla lastar inn omsette strengar og brukar dei i dialogvindauget «MinDialog»:

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

Les hjelpsida L10N service for å læra meir om korleis PO. og POT-filer vert handsama.


Resize

Moves the topleft corner of a dialog to new coordinates and/or modify its dimensions. All distances are expressed in 1/100 mm. Without arguments, the method resets the initial dimensions. Return True if the resize was successful.

Syntaks:

svc.Resize(opt Left: num, opt Top: num, opt Width: num, opt Height: num): bool

Parametrar:

Left: the horizontal distance from the top-left corner

Top: the vertical distance from the top-left corner

Width: the width of the rectangle containing the dialog

Height: the height of the rectangle containing the dialog

Negative or missing arguments are left unchanged

Eksempel:

I Basic

     oDialog.Resize(1000, 2000, Height := 6000) ' Width is not changed
   
I Python

With Python:


     oDialog.Resize(1000, 2000, Height = 6000)  # Width is not changed
   

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:

I Basic

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

Med Python:

I Python

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

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


Støtt oss!