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 zerbitzua erabiltzeko, ScriptForge liburutegia kargatu edo inportatu behar da:

• Basic makroak erabiltzkeo, ScriptForge liburutegia kargatu behar da honako instrukzioa erabiliz:
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
• Python scriptak erabiltzeko, berriz, scriptforge modulu baten inportazioa behar dute:
from scriptforge import CreateScriptService

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

Gertaerak abiarazi duen scriptaren erreferentzia duen URI kate bat itzultzen du. Irakurri espezifikazioak 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 Center Controls | EndExecute Execute GetTextsFromL10N | Resize 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()

## Center

Uneko elkarrizketa-koadroa leiho gurasoaren erdian zentratzen du. Argumenturik gabe, metodoak uneko leihoaren erdian zentratuko du elkarrizketa-koadroa.

True (egia) itzultzen du ongi gauzatzen denean.

### Sintaxia:

svc.Center(opt Parent: obj): bool

### Parametroak:

Parent: Aukerako objektu bat, hauetako bat izan daiteke…

- ScriptForge elkarrizketa-koadro bat den objektua

- ScriptForge dokumentu bat (Calc, Base, ...) den objektua

### Adibidea:

##### Basic lengoaian

         Sub TriggerEvent(oEvent As Object)
             Dim oDialog1 As Object, oDialog2 As Object, lExec As Long
             Set oDialog1 = CreateScriptService("DialogEvent", oEvent) ' Gertaera eragin duen elkarrizketa-koadroa
             Set oDialog2 = CreateScriptService("Dialog", ...) ' Ireki bigarren elkarrizketa-koadro bat
             oDialog2.Center(oDialog1)
             lExec = oDialog2.Execute()
             Select Case lExec
                 ...
         End Sub

##### Python lengoaian

         def triggerEvent(event: uno):
           dlg1 = CreateScriptService('DialogEvent.Dialog', event)  # Gertaera eragin duen elkarrizketa-koadroa
           dlg2 = CreateScriptService('Dialog', ...)  # Ireki bigarren elkarrizketa-koadro bat
           dlg2.Center(dlg1)
           rc = dlg2.Execute()
           if rc is False:
             # ...

## Controls

Hauetako bat itzultzen du:

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

## GetTextsFromL10N

Elkarrizketa-koadro bateko testu-kate finko guztiak ordezkatzen ditu itzulitako bertsioekin, L10N zerbitzu-instantzia batean oinarrituta. Metodo honek honako kateak itzultzen ditu:

- Elkarrizketa-koadroaren izenburua.

- Epigrafea honako kontrol motetan: botoia, kontrol-laukia, lerro finkoa, testu finkoa, talde-markoa eta aukera-kontrola.

- Kate estatikoak zerrenda-koadroetan eta konbinazio-koadroetan.

- Sagua kontrolaren gainetik igarotzen denean bistaratzen den aholkua eta laguntza-testua.

Metodoak True itzultzen du arrakasta badu.

Elkarrizketa-koadro bateko kateak itzuli ahal izan daitezen, erabili L10N zerbitzuaren AddTextsFromDialog metodoa.

### Sintaxia:

svc.GetTextsFromL10N(l10n: svc): bool

### Parametroak:

l10n: L10N zerbitzuaren instantzia bat, itzuliko diren kateak hortik atzituko dira.

### Adibidea:

Hurrengo adibidean, itzulitako kateak kargatzen dira eta "MyDialog" elkarrizketa-koadroari aplikatzen zaizkio.

##### Basic lengoaian

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

##### Python lengoaian

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

Irakurri L10N zerbitzuaren laguntza-orria PO eta POT fitxategiak nola erabiltzen diren ikasteko.

## Resize

Elkarrizketa-koadro baten goiko ezkerreko izkina koordenatu berrietara eramaten du eta/edo bere dimentsioak aldatzen ditu. Distantzia guztiak 1/100 mm-tan daude adierazita. Argumenturik gabe, metodoak hasierako dimentsioak berrezartzen ditu. True itzultzen du tamaina aldatzea ongi gauzatu bada.

### Sintaxia:

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

### Parametroak:

Left: Distantzia horizontala goiko ezkerreko izkinatik

Top: Distantzia bertikala goiko ezkerreko izkinatik

Width: Elkarrizketa-koadroa duen laukizuzenaren zabalera

Height: Elkarrizketa-koadroa duen laukizuzenaren altuera

Argumentu negatiboak edo falta direnak ez dira aldatzen

### Adibidea:

##### Basic lengoaian

         oDialog.Resize(1000, 2000, Height := 6000) ' Zabalera ez da aldatzen

##### Python lengoaian

Python bidez:

         oDialog.Resize(1000, 2000, Height = 6000)  # Zabalera ez da aldatzen

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

##### Basic lengoaian

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

Python bidez:

##### Python lengoaian

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

Azpimarraren karaktere bat, "_", aurrizki gisa duten ScriptForge Basic errutina edo identifikatzaile guztiak barneko erabilerarako erreserbatuta daude. Ez dira Basic makroetan edo Python scriptetan erabili behar.

Erlazionatutako gaiak

SFDialogs.DialogControl zerbitzua

ScriptForge.UI zerbitzua