SFDialogs.Dialog zerbitzua

Dialog zerbitzuak Basic lengoaiaren elkarrizketa-koadroen editorearekin sortutako elkarrizketa-koadroak kudeatzen laguntzen du. Uneko klasearen instantzia bakoitzak erabiltzaileari erakutsiko zaion elkarrizketa-koadro bat ordezkatzen du.

tip

Elkarrizketa-koadroak modu modalean edo ez modalean bistaratu daiteke.


Modu modalean, elkarrizketa-koadroa bistaratu eta makro-prozesuaren exekuzioa gelditu egingo da 'Ados' edo 'Utzi' botoia sakatu arte. Bitartean, elkarrizketa-koadroaren barruan erabiltzaileak exekutatutako ekintzek beste ekintza batzuk abiarazi ditzakete.

Modu ez modalean, elkarrizketa-koadroak "flotatu" egingo du erabiltzailearen mahaigainean eta makro-prozesuaren exekuzioak aurrera jarraituko du. Elkarrizketa-koadro ez modalak ixteko, Terminate() metodoa erabili behar da edo LibreOffice saioa amaitu behar da. Leihoa ixteko botoia desaktibatuta ageri da elkarrizketa-koadro ez modaletan.

Elkarrizketa-koadro bat memoriatik desagertzen da hura esplizituki amaitu ondoren.

tip

SFDialogs.Dialog zerbitzua SFDialogs.DialogControl zerbitzuarekin estuki erlazionatuta dago.


Zerbitzuari deitzea eta hura erabiltzea

Dialog zerbitzuari CreateScriptService metodoarekin deitzen zaio. Posizioko hiru argumentu behar ditu aktibatuko den elkarrizketa-koadroa zehazteko:

Container: "GlobalScope" aurretik instalatutako liburutegietarako, edo ScriptForge.UI zerbitzuak definitzen duen moduko leiho-izen bat. Balio lehenetsiak, "" kate hutsak, uneko dokumentuari dagokio.

Library: Edukiontziak duen liburutegi baten izena, maiuskulak/minuskulak bereizten ditu. Balio lehenetsia "Standard" da.

DialogName: Elkarrizketa-koadroa izendatzeko erabilitako kate bat, maiuskulak/minuskulak bereizten ditu.

Beheko LibreOffice Basic eta Python adibideek ScriptForge liburutegi partekatuaren dlgConsole elkarrizketa-koadroa erakusten dute:


      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")
      '...kontrolen hasieratzea hemen doa...
      lButton = oDlg.Execute()
      'Modu lehenetsia = Modal
      If lButton = oDlg.OKBUTTON Then
      '...Prozestatu kontrolak prozesatu eta egin egin beharrekoa hemen
      End If
      oDlg.Terminate()
  

Edo Python erabilita:


    dlg = CreateScriptService('SFDialogs.Dialog', 'GlobalScope', 'ScriptForge', 'dlgConsole')
    # ...kontrolen hasieratzea hemen doa...
    rc = dlg.Execute()
    # Modu lehenetsia Modal da
    if rc == dlg.OKBUTTON:
        #...Prozestatu kontrolak prozesatu eta egin egin beharrekoa hemen
    dlg.Terminate()
  

Beste aukera bat da Dialog instantzia SFDialogs.DialogEvent zerbitzuaren bidez atzitzea, elkarrizketa-koadroa Dialog zerbitzuarekin hasieratu bada. DialogEvent zerbitzuak SFDialogs.Dialog gertaera abiarazi duen zerbitzu-instantzia itzultzen du.


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

Python bidez:


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

Kontuan izan aurreko adibideetan "SFDialogs." ez dela derrigorrezkoa idaztea, hura kentzea egokia irizten zaionean.

Propietateak

Izena

Irakurtzeko soilik

Mota

Deskribapena

OKBUTTON

Bai

Integer

Balioa = 1. 'Ados' botoi bat sakatu da.

CANCELBUTTON

Bai

Integer

Balioa = 0. 'Utzi' botoi bat sakatu da.

Caption

Ez

String

Elkarrizketa-koadroaren izenburua zehazten du.

Height

Ez

Long

Elkarrizketa-koadroaren altuera zehazten du.

Modal

Bai

Boolean

Elkarrizketa-koadroa unean modu modalean exekutatzen ari den zehazten du.

Name

Bai

String

Elkarrizketa-koadroaren izena.

Page

Ez

Integer

Elkarrizketa-koadro batek orri bat baino gehiago eduki dezake, eta erabiltzaileak urratsez urrats zehazkatu behar ditu. 'Dialog' objektuaren 'Page' propietateak definitzen du elkarrizketa-koadroaren zein orri dagoen aktibo.

Visible

Ez

Boolean

Elkarrizketa-koadroa mahaigainean ikusgai dagoen zehazten du. Modu lehenetsian ez da ikusgai egongo 'Exekute()' metodoa exekutatu arte.

XDialogModel

Bai

UNO
object

Elkarrizketa-koadroa ordezkatzen duen UNO objektua. Begiratu APIaren dokumentazioko XControlModel eta UnoControlDialogModel informazio xeheagorako.

XDialogView

Bai

UNO
object

Elkarrizketa-koadroaren bista ordezkatzen duen UNO objektua. Begiartu APIaren dokumentazioko XControl eta UnoControlDialog informazio xeheagorako.

Width

Ez

Long

Elkarrizketa-koadroaren zabalera zehazten du.


Gertaeraren propietateak

note

Gertaera-propietate hauek LibreOffice 7.2 bertsiotik aurrera daude erabilgarri.


Gertaerak abiarazi duen scriptaren erreferentzia bat duen URI bat itzultzen du. Irakurri espezifikazioa scriptgintzako lan-markoaren URI espezifikazioan.

Izena

Irakurtzeko soilik

Basic IDEaren deskribapena

OnFocusGained

Bai

Fokua hartzean

OnFocusLost

Bai

Fokua galtzean

OnKeyPressed

Bai

Tekla sakatuta

OnKeyReleased

Bai

Tekla askatuta

OnMouseDragged

Bai

Tekla sakatuta dagoenean sagua arrastatzean

OnMouseEntered

Bai

Sagua barnean dagoenean

OnMouseExited

Bai

Sagua kanpoan dagoenean

OnMouseMoved

Bai

Sagua mugitzean

OnMousePressed

Bai

Saguaren botoia sakatzean

OnMouseReleased

Bai

Saguaren botoia askatzean


Metodoak

Activate
Controls

EndExecute
Execute

Terminate


Activate

Ezarri fokua uneko Dialog instantzian. Itzuli True fokuratzeko ongi egin bada.

Metodo honi elkarrizketa-koadro batetik edo kontrol-gertaera batetik deitzen zaio, edo elkarrizketa-koadro bat modu ez modalean bistaratzen denean.

Sintaxia:

svc.Activate(): bool

Adibidea:


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

Python zein LibreOffice Basic adibideek espero dute elkarrizketa-koadroa uneko dokumentuaren Standard liburutegian biltegiratuta egongo dela.


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

Controls

Itzuli hauetako bat:

Sintaxia:

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

svc.Controls(controlname: str): svc

Parametroak:

ControlName : Baliozko kontrol-izen bat, maiuskulak/minuskulak bereizita, kate gisa. Ez badago, itzuliko den kontrol-izenen zerrenda zeron oinarritutako matrize bat izango da.

Adibidea:


      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

Elkarrizketa-koadro modal baten bistaratzea amaitzen du eta argumentua bueltatzen du uneko Execute() exekuzio-ekintzaren itzulera-balio gisa.

EndExecute() normalean elkarrizketa-koadro batek edo kontrol-gertaera batek abiarazitako makro baten prozesatzean egoten da.

Sintaxia:

svc.EndExecute(returnvalue: int)

Parametroak:

returnvalue: Exekutatzen ari den Execute() metodoari pasatutako balioa.

Adibidea:

LibreOffice Basic erabilita:


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


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

Above com.sun.star.lang.EventObject aipamenak aukerakoak dira. Holako oharpenek LibreOffice Application Programming Interface APIa identifikatzen laguntzen dute.


Execute

Bistaratu elkarrizketa-koadroa eta, modala bada, itxaron erabiltzaileak hura amaitu dezan. Itzulitako balioa hauetako bat da:

Modalak ez diren elkarrizketa-koadroen kasuan, metodoak beti 0 itzultzen du eta makroaren exekuzioak aurrera jarraitzen du.

Sintaxia:

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

Parametroak:

modal: False elkarrizketa-koadroa ez modala denean. Balio lehenetsia = True.

Adibidea:

Hurrengo Basic adibidean, myDialog elkarrizketa-koadroa uneko dokumentuaren Standard liburutegian biltegiratzen da.


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

Hurrengo Python kodeak Euro Basic liburutegi partekatutik bistaratzen duDlgConvert elkarrizketa-koadro modala.


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

Terminate

Amaitu Dialog zerbitzua uneko instantziarako. Itzuli True ongi amaitu bada.

Sintaxia:

svc.Terminate(): bool

Adibidea:

Beheko Basic eta Python adibideek DlgConsole eta dlgTrace elkarrizketa-koadro ez modalak irekitzen dituzte. ScriptForge eta Access2Base liburutegi partekatuetan biltegiratzen dira, hurrenez hurren. Elkarrizketa-koadroa ixteko botoiak desgaituta daude eta amaitze esplizitua gauzatzen da exekutatzen ari den prozesu baten amaieran.

Hurrengo adibidean, inhibitutako leiho-ixtea DlgConsole elkarrizketa-koadroko botoi batek ordezten du:


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

Python bidez:


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

Aurrizki gisa azpimarra bat ("_") duten ScriptForge Basic errutina edo identifikatzaile guztiak barneko erabilerarako erreserbatuta daude. Ez daude Basic makroetan erabiltzeko pentsatuta.


Emaguzu laguntza!