SFDialogs.Dialog-service

De service Dialog draagt bij aan het beheer van dialoogvensters die zijn gemaakt met de Basic Dialog Editor. Elk exemplaar van de huidige klasse vertegenwoordigt een enkel dialoogvenster dat aan de gebruiker wordt weergegeven.

tip

Een dialoogvenster kan worden weergegeven in modale of in niet-modale modi.


In de modale modus wordt het vak weergegeven en wordt de uitvoering van het macroproces opgeschort, totdat op een van de knoppen OK of Annuleren wordt gedrukt. In de tussentijd kunnen gebruikersacties die op de box worden uitgevoerd, specifieke acties activeren.

In niet-modale modus "zweeft" het dialoogvenster op het bureaublad van de gebruiker en de uitvoering van het macroproces gaat normaal door. Een niet-modaal dialoogvenster wordt gesloten wanneer het wordt beƫindigd met de methode Terminate() of wanneer de LibreOffice-sessie eindigt. De knop voor het sluiten van het venster is inactief in niet-modale dialoogvensters.

Een dialoogvenster verdwijnt uit het geheugen nadat het expliciet is beƫindigd.

tip

De service SFDialogs.Dialog is nauw verwant aan de service SFDialogs.DialogControl.


Service aanroep en gebruik

Voordat de service Dialog gebruikt kan worden, moet de bibliotheek ScriptForge eerst worden geladen of geĆÆmporteerd:

note

ā€¢ Basic macro's kunnen de bibliotheek ScriptForge laden met de instructie:
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")

ā€¢ Python scripts kunnen de module scriptforge importeren met:
from scriptforge import CreateScriptService


De service Dialog wordt aangeroepen door de methode CreateScriptService. Er zijn drie positionele argumenten om het dialoogvenster aan te geven dat geactiveerd moet worden:

Container: "GlobalScope" voor voorgeĆÆnstalleerde bibliotheken of een vensternaam zoals gedefinieerd met de service ScriptForge.UI. De standaardwaarde, een lege tekenreeks, staat voor het huidige document.

Library: De hoofdlettergevoelige naam van een bibliotheek in de container. Standaardwaarde is "Standard".

DialogName: Een hoofdlettergevoelige tekenreeks die de dialoog aangeeft.

Hier voorbeelden in LibreOffice Basic en Python voor het weergeven van de dialoog dlgConsole die behoort tot de gedeelde bibliotheek 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")
      '... hier staat wat initialisatie...
      lButton = oDlg.Execute()
      'Standaardmodus is Modal
      If lButton = oDlg.OKBUTTON Then
      '... Procescontrole
      End If
      oDlg.Terminate()
  

Of met Python:


    dlg = CreateScriptService('SFDialogs.Dialog', 'GlobalScope', 'ScriptForge', 'dlgConsole')
    #... hier staat wat initialisatie...
    rc = dlg.Execute()
    # Standaardmodus is Modal
    if rc == dlg.OKBUTTON:
        # ... Procescontrole
    dlg.Terminate()
  

Als alternatief kan een Dialog-instantie worden opgehaald via de service SFDialogs.DialogEvent, op voorwaarde dat het dialoogvenster is gestart met de service Dialog. DialogEvent retourneert de service-instantie SFDialogs.Dialog die de gebeurtenis heeft geactiveerd.


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

met Python:


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

Merk op dat in eerdere voorbeelden het voorvoegsel "SFDialogs." kan worden weggelaten wanneer dit passend wordt geacht.

Eigenschappen

Naam

AlleenLezen

Type

Beschrijving

OKBUTTON

Ja

Integer

Value = 1. Er is op de knop OK gedrukt.

CANCELBUTTON

Ja

Integer

Value = 0. A Er is op de knop Annuleren gedrukt.

Caption

Nee

String

Geef de titel van het dialoogvenster op.

Height

Nee

Long

Geef de hoogte van het dialoogvenster op.

Modal

Ja

Boolean

Geeft aan of het dialoogvenster momenteel wordt uitgevoerd in de modale modus.

Name

Ja

String

De naam van het dialoogvenster

Page

Nee

Integer

Een dialoogvenster kan meerdere pagina's hebben die stap voor stap door de gebruiker kunnen worden doorlopen. De eigenschap Page van het Dialog-object definieert welke pagina van het dialoogvenster actief is.

Visible

Nee

Boolean

Geef op of het dialoogvenster zichtbaar is op het bureaublad. Standaard is het niet zichtbaar totdat de methode Execute() wordt uitgevoerd en daarna zichtbaar.

XDialogModel

Ja

UNO
object

Het UNO-object dat het dialoogmodel vertegenwoordigt. Raadpleeg XControlModel en UnoControlDialogModel in de Application Programming Interface (API)-documentatie voor gedetailleerde informatie.

XDialogView

Ja

UNO
object

Het UNO-object dat de dialoogweergave vertegenwoordigt. Raadpleeg XControl en UnoControlDialog in de Application Programming Interface (API)-documentatie voor gedetailleerde informatie.

Width

Nee

Long

Geef de breedte van het dialoogvenster op.


Eigenschappen gebeurtenis

Retourneert een URI-tekenreeks met de verwijzing naar het script dat door de gebeurtenis is geactiveerd. Lees de specificatie ervan in de scripting framework URI-specificatie.

Naam

AlleenLezen

Basic IDE-beschrijving

OnFocusGained

Ja

Bij het verkrijgen van focus

OnFocusLost

Ja

Bij verlies van focus

OnKeyPressed

Ja

Toets ingedrukt

OnKeyReleased

Ja

Toets losgelaten

OnMouseDragged

Ja

Muis bewoog tijdens toetsaanslagen

OnMouseEntered

Ja

Muis binnen

OnMouseExited

Ja

Muis buiten

OnMouseMoved

Ja

Muisbeweging

OnMousePressed

Ja

Muisknop ingedrukt

OnMouseReleased

Ja

Muisknop losgelaten


Methoden

Activate
Center
Controls

EndExecute
Execute
GetTextsFromL10N

Resize
Terminate


Activate

Stel de focus in op de huidige Dialog instantie. Retourneer True als het scherpstellen gelukt is.

Deze methode wordt aangeroepen vanuit een dialoog of besturingsgebeurtenis, of wanneer een dialoog wordt weergegeven in niet-modale modus.

Syntaxis:

svc.Activate(): bool

Voorbeeld:


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

Python en LibreOffice Basicvoorbeelden gaan er beide van uit dat het dialoogvenster is opgeslagen in de bibliotheek Standard van het huidige document.


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

Center

Centreert de huidige dialooginstantie in het midden van een bovenliggend venster. Zonder argumenten centreert de methode het dialoogvenster in het midden van het huidige venster.

Retourneert True bij succes.

Syntaxis:

svc.Center(opt Parent: obj): bool

Parameters:

Parent: Een optioneel object ā€¦

Voorbeeld:

In BASIC

     Sub TriggerEvent(oEvent As Object)
         Dim oDialog1 As Object, oDialog2 As Object, lExec As Long
         Set oDialog1 = CreateScriptService("DialogEvent", oEvent) ' Het dialoogvenster dat de gebeurtenis heeft veroorzaakt
         Set oDialog2 = CreateScriptService("Dialog", ...) ' Open een tweede dialoogvenster
         oDialog2.Center(oDialog1)
         lExec = oDialog2.Execute()
         Select Case lExec
             ...
     End Sub
  
In Python

     def triggerEvent(event: uno):
       dlg1 = CreateScriptService('DialogEvent.Dialog', event) # Het dialoogvenster dat de gebeurtenis heeft veroorzaakt
       dlg2 = CreateScriptService('Dialog', ...)  # Een tweede dialoogvenster openen
       dlg2.Center(dlg1)
       rc = dlg2.Execute()
       if rc is False:
         # ...
   

Controls

Teruggave:

Syntaxis:

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

svc.Controls(controlname: str): svc

Parameters:

ControlName : Een geldige besturingselementnaam als hoofdlettergevoelige tekenreeks. Indien afwezig, wordt de lijst met besturingselementnamen geretourneerd als een op nul gebaseerde matrix.

Voorbeeld:


      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

Beƫindigt de weergave van een modaal dialoogvenster en geeft het argument terug als retourwaarde voor de huidige Execute() actieve actie.

EndExecute() is meestal vervat in de verwerking van een macro die wordt geactiveerd door een dialoogvenster of besturingsgebeurtenis.

Syntaxis:

svc.EndExecute(returnvalue: int)

Parameters:

returnvalue: De waarde die is doorgegeven aan de actieve methode Execute().

Voorbeeld:

LibreOffice Basic gebruiken:


      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
   

Python gebruiken:


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

Bovenstaande com.sun.star.lang.EventObject-vermeldingen zijn optioneel. Dergelijke annotaties helpen bij het identificeren van LibreOffice Application Programming Interface (API).


Execute

Geef het dialoogvenster weer en wacht, indien modaal, op beƫindiging door de gebruiker. De geretourneerde waarde is ofwel:

Voor niet-modale dialoogvensters retourneert de methode altijd 0 en gaat de uitvoering van de macro door.

Syntaxis:

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

Parameters:

modal: False bij niet-modale dialoogvenster. Standaard = True.

Voorbeeld:

In dit basisvoorbeeld wordt het dialoogvenster myDialog opgeslagen in de bibliotheek Standard van het huidige document.


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

Deze Python-code geeft het modale dialoogvenster DlgConvert weer uit de gedeelde Basic bibliotheek Euro.


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

GetTextsFromL10N

Vervangt alle vaste tekstreeksen in een dialoogvenster door hun vertaalde versies op basis van een service-instantie L10N. Deze methode vertaalt de volgende strings:

De methode retourneert True indien succesvol.

Gebruik de AddTextsFromDialog methode van de service L10N om een lijst met vertaalbare tekenreeksen in een dialoogvenster te maken.

Syntaxis:

svc.GetTextsFromL10N(l10n: svc): bool

Parameters:

l10n: Een service-instantie L10N waaruit vertaalde tekenreeksen worden opgehaald.

Voorbeeld:

Het volgende voorbeeld laadt vertaalde tekenreeksen en past ze toe op het dialoogvenster "MyDialog".

In BASIC

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

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

Lees de L10N-service-helppagina voor meer informatie over hoe PO- en POT-bestanden worden verwerkt.


Resize

Verplaatst de linkerbovenhoek van een dialoogvenster naar nieuwe coƶrdinaten en/of wijzigt de afmetingen ervan. Alle afstanden zijn uitgedrukt in 1/100 mm. Zonder argumenten stelt de methode de initiƫle dimensies opnieuw in. Retourneert True als het wijzigen van de grootte is gelukt.

Syntaxis:

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

Parameters:

Left: de horizontale afstand vanaf de linkerbovenhoek

Top: de verticale afstand vanaf de linkerbovenhoek

Width: de breedte van de rechthoek die het dialoogvenster bevat

Height: de hoogte van de rechthoek die het dialoogvenster bevat

Negatieve of ontbrekende argumenten blijven ongewijzigd

Voorbeeld:

In BASIC

     oDialog.Resize(1000, 2000, Height := 6000) ' Breedte is niet gewijzigd
   
In Python

Met Python:


     oDialog.Resize(1000, 2000, Height = 6000)  # Breedte is niet gewijzigd
   

Terminate

Beƫindig de service Dialog voor de huidige instantie. Retourneert True als de beƫindiging is gelukt.

Syntaxis:

svc.Terminate(): bool

Voorbeeld:

Onderstaande basis- en Python-voorbeelden openen de niet-modale dialoogvensters DlgConsole en dlgTrace. Ze worden respectievelijk opgeslagen in ScriptForge en Access2Base gedeelde bibliotheken. Dialoogvenster sluitknoppen zijn uitgeschakeld en expliciete beƫindiging wordt uitgevoerd aan het einde van een lopend proces.

In dit voorbeeld vervangt een knop in DlgConsole de geblokkeerde venstersluiting:

In BASIC

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

Met Python:

In Python

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

Alle ScriptForge Basic-routines of variabelen die beginnen met een underscore "_" zijn voor intern gebruik. Gebruik deze niet in een Basic of Python-macro.


Help ons, alstublieft!