Edukiak
Indizea 🔎︎

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

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.

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

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:

- elkarrizketa-koadroak dituen kontrolen zerrenda

- bere izenean oinarritutako DialogControl klase-instantzia 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)

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:

- 0 : Utzi botoia sakatu da

- 1 : Ados botoia sakatu da

- Bestela, elkarrizketa-koadro batek edo kontrol-gertaera batek bidalitako EndExecute() instrukzioarekin gelditu den elkarrizketa-koadroa

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

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

Erlazionatutako gaiak

SFDialogs.DialogControl zerbitzua

ScriptForge.UI zerbitzua