Edukiak
Indizea 🔎︎

# SFDialogs.DialogControl zerbitzua

DialogControl zerbitzuak Basic-en elkarrizketa-koadroen editorearekin definitutako elkarrizketa-koadro baten kontrolak kudeatzen ditu. Uneko zerbitzuaren instantzia bakoitzak elkarrizketa-koadro bateko kontrol bakun bat ordezkatzen du.

Fokua elkarrizketa-koadroko kontrolek bistaratzen dituzten balioak eskuratzen eta ezartzen ezarrita dago. Formatua atzitzeko, XControlModel and XControlView propietateak erabiltzen dira.

Ikusi nola DialogControl.Value propietatearen eduki bakarra aldatzen den kontrol motaren arabera.

Arreta berezia eskaini zaie zuhaitz-kontrol motako kontrolei. Erraza da zuhaitz bat betetzea, bai adarrez adar, bat adar sorta oso bat aldi berean. Zuhaitz-kontrol bat estatikoki zein dinamikoki bete daiteke.

SFDialogs.DialogControl zerbitzuak erlazio estua du SFDialogs.Dialog zerbitzuarekin.

## Zerbitzuari deitzea

DialogControl zerbitzuari lehendik dagoen Dialog zerbitzu-instantzia batetik deitu behar zaio, Controls() metodoa erabilita. Elkarrizketa-koadroa SFDialogs.Dialog zerbitzuarekin hasi behar da.

          Dim myDialog As Object, myControl As Object
          Set myDialog = CreateScriptService("SFDialogs.Dialog", "GlobalScope", myLibrary, DialogName)
          Set myControl = myDialog.Controls("myTextBox")
          myControl.Value = "Elkarrizketa-koadroaren hasierako ordua: " & Now()
          myDialog.Execute()
          ' ... kontrolen uneko balioak prozesatzen ditu
          myDialog.Terminate()

         from time import localtime, strftime
         dlg = CreateScriptService('SFDialogs.Dialog', 'GlobalScope', lib_name, dlg_name)
         text = dlg.Controls('myTextBox')
         text.Value = "Elkarrizketa-koadroaren hasierako ordua: " + strftime("%a, %d %b %Y %H:%M:%S", localtime())
         dlg.Execute()
         # ... kontrolen uneko balioak prozesatzen ditu
         dlg.Terminate()

Horren ordez, kontrol-instantzia bat SFDialogs.DialogEvent zerbitzuaren bidez atzitu daiteke, betiere elkarrizketa-koadroa Dialog zerbitzuarekin hasi bada. DialogEvent zerbitzuak gertaera abiarazi duen SFDialogs.DialogControl klase-instantzia itzultzen du.

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

         def some_event(event: uno):
             ctrl = CreateScriptService('SFDialogs.DialogEvent', event)
             # ...

Kontuan izan aurreko adibideetan "SFDialogs." aurrizkia ez dela beharrezkoa.

## Kontrol motak

DialogControl zerbitzua honako kontrol motetarako dago erabilgarri:

- Button

- CheckBox

- ComboBox

- CurrencyField

- DateField

- FileControl

- FixedLine

- FixedText

- FormattedField

- GroupBox

- ImageControl

- ListBox

- NumericField

- PatternField

- ProgressBar

- RadioButton

- ScrollBar

- TextField

- TimeField

- TreeControl

  Kontrol hau LibreOffice 7.2 bertsiotik aurrera dago erabilgarri.

## Propietateak

Izena | Irakurtzeko soilik | Mota | Honi aplikagarria: | Deskribapena
Cancel | Ez | Boolean | Button | Komando-botoi batek 'Utzi' botoi baten portaera duen ala ez zehazten du.
Caption | Ez | String | Button, CheckBox, FixedLine, FixedText, GroupBox, RadioButton | Kontrolari lotutako testua zehazten du.
ControlType | Bai | String | Dena | Goian zerrendatutako motetako bat.
CurrentNode | Ez | UNO objektua | TreeControl | Zuhaitz-kontrolean hautatutako goreneko uneko nodoa. Begiratu XmutableTreeNode Application Programming Interface (API) dokumentazioan informazio xeheagorako. Propietate hau LibreOffice 7.2 bertsiotik aurrera dago erabilgarri.
Default | Ez | Boolean | Button | Komando-botoi bat botoi lehenetsia ('Ados') den ala ez zehazten du.
Enabled | Ez | Boolean | Dena | Kontrola kurtsorearekin atzitu daitekeen ala ez zehazten du.
Format | Ez | String | DateField, TimeField, FormattedField (irakurtzeko soilik) | Datak eta orduak bistaratzeko formatua zehazten du. Kate hauetako bat izan behar du: Datetarako: "Standard (short)", "Standard (short YY)", "Standard (short YYYY)", "Standard (long)", "DD/MM/YY", "MM/DD/YY", "YY/MM/DD", "DD/MM/YYYY", "MM/DD/YYYY" , "YYYY/MM/DD", "YY-MM-DD", "YYYY-MM-DD". Orduetarako: "24h short", "24h long", "12h short", "12h long".
ListCount | Bai | Long | ComboBox, ListBox | Zerrenda-koadro baten edo konbinazio-koadro baten errenkada kopurua zehazten du.
ListIndex | Ez | Long | ComboBox, ListBox | Zerrenda-koadro batean edo konbinazio-koadro batean zein elementu dagoen hautatuta zehazten du.
Locked | Ez | Boolean | ComboBox, CurrencyField, DateField, FileControl, FormattedField, ListBox, NumericField, PatternField, TextField, TimeField | Kontrola irakurtzeko soilik den zehazten du.
MultiSelect | Ez | Boolean | ListBox | Erabiltzaileak zerrenda-koadro batean hautapen anitz egin ditzakeen zehazten du.
Name | Bai | String | Dena | Kontrolaren izena.
Page | Ez | Integer | Dena | Elkarrizketa-koadro batek orri bat baino gehiago izan dezake. Erabiltzaileak banan banan joan daiteke batetik bestera. Elkarrizketa-koadroaren objektuaren 'Page' propietateak koadroaren zein orri dagoen aktibo definitzen du. Kontrol baten 'Page' propietateak kontrola elkarrizketa-koadroko zein orritan egongo den ikusgai definitzen du.
Parent | Bai | Dialog zerbitzua | Dena | SFDialogs.Dialog klase-objektuaren instantzia gurasoa.
Picture | Ez | String | Button, ImageControl | Zehaztutako kontrolean bistaratuko den bit-mapa edo beste motaren bateko grafikoa duen fitxategi-izena zehazten du. Fitxategi-izenak ScriptForge.FileSystem zerbitzuaren FileNaming atributuarekin bat etorri behar du.
RootNode | Bai | UNO objektua | TreeControl | Erro-nodorik behekoena ordezkatzen duen objektu bat (normalean erro-nodo bakar bat dago). Begiratu XmutableTreeNode Application Programming Interface (API) dokumentazioan informazio xeheagorako. Propietate hau LibreOffice 7.2 bertsiotik aurrera dago erabilgarri.
RowSource | Ez | Array of strings | ComboBox, ListBox | Konbinazio-koadroan edo zerrenda-koadroan dauden datuak zehazten ditu.
Text | Bai | String | ComboBox, FileControl, FormattedField, PatternField, TextField | Kontrolak erakusten duen testua atzitzeko aukera ematen du.
TipText | Ez | String | Dena | Saguaren erakuslea kontrolaren gainean jartzen denean agertzen den aholkuaren testua zehazten du.
TripleState | Ez | Boolean | CheckBox | Kontrol-laukia grisean agertu daitekeen ala ez zehazten du.
Value | Ez | Variant |  | Begiratu Value propietatea
Visible | Ez | Boolean | Dena | Kontrola ezkutuan dagoen ala ikusgai dagoen zehazten du.
XControlModel | Bai | UNO objektua | Dena | Kontrol-eredua ordezkatzen duen UNO objektua. Begiratu APIaren dokumentazioko XControlModel eta UnoControlDialogModel informazio xeheagorako.
XControlView | Bai | UNO objektua | Dena | Kontrol-bista ordezkatzen duen UNO objektua. Begiratu APIaren dokumentazioko XControl eta UnoControlDialog informazio xeheagorako.
XTreeDataModel | Bai | UNO objektua | TreeControl | Zuhaitz-kontrolaren datu-eredua ordezkatzen duen UNO objektua. Begiratu APIaren dokumentazioko XMutableTreeDataModel informazio xeheagorako. Propietate hau LibreOffice 7.2 bertsiotik aurrera dago erabilgarri.

## Value propietatea

Kontrol mota | Mota | Deskribapena
Button | Boolean | Txandakatze-botoietarako soilik
CheckBox | Boolearra edo osoa | 0, False: markatu gabea 1, True: markatua 2: grisean, ezezaguna
ComboBox | String | Hautatutako balioa. ListIndex propietatea ordezko aukera bat da.
CurrencyField | Zenbakia |
DateField | Date |
FileControl | String | ScriptForge.FileSystem zerbitzuaren FileNaming propietatearen arabera formatua eman zaion fitxategi-izen bat.
FormattedField | Katea edo zenbakia |
ListBox | Kate edo kateen matrizea | Hautatutako errenkada(k) eskalar gisa edo matrize gisa, MultiSelect atributuaren arabera.
NumericField | Zenbakia |
PatternField | String |
ProgressBar | Zenbakia | Muga aurredefinituen barruan egon behar du
RadioButton | Boolean | Botoi bakoitzak bere izen propioa du. Elkarrekin lotuta daude beren TAB kokaguneak elkarren albokoak badira. Irrati-botoi baten balioa True bada, erlazionatutako gainerako botoiei automatikoki False ezarriko zaie.
ScrollBar | Zenbakia | Muga aurredefinituen barruan egon behar du
TextField | String | Eremuan ageri den testua
TimeField | Date |

## Gertaeraren propietateak

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

Gertaera-propietate hauek LibreOffice 7.2 bertsiotik aurrera daude erabilgarri.

Izena | Irakurtzeko soilik | Deskripzioa, Basic IDEan etiketatu den moduan
OnActionPerformed | Bai | Exekutatu ekintza
OnAdjustmentValueChanged | Bai | Doitzean
OnFocusGained | Bai | Fokua hartzean
OnFocusLost | Bai | Fokua galtzean
OnItemStateChanged | Bai | Elementuaren egoera aldatzean
OnKeyPressed | Bai | Tekla sakatzean
OnKeyReleased | Bai | Tekla askatzean
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
OnNodeExpanded | Ez | (Ez Basic IDEan) hedatze-botoia zuhaitz-kontroleko nodo batean sakatzen denean
OnNodeSelected | Ez | (Ez Basic IDEan) zuhaitz-kontroleko nodo bat hautatzen denean
OnTextChanged | Bai | Testua aldatzean

## Metodoak

DialogControl zerbitzuaren metodoen zerrenda
AddSubNode AddSubTree | CreateRoot FindNode | SetFocus WriteLine

Metodo hauek LibreOffice 7.2 bertsiotik aurrera daude erabilgarri.

## AddSubNode

Sortu eta itzuli zuhaitzaren nodo berria, nodo guraso baten azpiko UNO objektu gisa. Begiratu XMutableTreeNode Application Programming Interface (API) dokumentazioan informazio xeheagorako.

Metodo hau elkarrizketa-koadroa bistaratu baino lehen deitu daiteke, hasierako zuhaitza eraikitzeko. Zuhaitza dinamikoki osatzeko ere deitu daiteke, bai elkarrizketa-koadro batetik bai kontrol-gertaera batetik (OnNodeExpanded gertaera erabilita).

### Sintaxia:

svc.AddSubNode(parentnode: uno, displayvalue: str, opt datavalue: any): uno

### Parametroak:

parentnode: Nodo motako UNO objektu bat, com.sun.star.awt.tree.XMutableTreeNode motakoa.

displayvalue: Zuhaitzaren kontrol-laukian ageri den testua.

datavalue: Nodo berriari lotutako edozein balio. datavalue kate bat, data bat edo zenbaki bat izan daiteke. Aplikagarria ez bada, ez erabili argumentu hau.

### Adibidea:

LibreOffice Basic eta Python adibideek uneko dokumentuaren myDialog elkarrizketa-koadroa Standard liburutegitik hartzen dute.

          Dim oDlg As Object, myTree As Object, myNode As Object, theRoot As Object
          Set oDlg = CreateScriptService("Dialog",,, "myDialog")
          Set myTree = oDlg.Controls("myTreeControl")
          Set theRoot = myTree.CreateRoot("Tree top")
          Set myNode = myTree.AddSubNode(theRoot, "A branch ...")

         dlg = CreateScriptService('SFDialogs.Dialog', None, None, 'myDialog')
         tree = dlg.Controls('myTreeControl')
         root = tree.CreateRoot('Tree top')
         node = tree.AddSubNode(root, 'A branch ...')

## AddSubTree

True (egia) itzultzen du nodo guraso baten mendeko azpizuhaitz bat zuhaitz-kontrol batean ongi txertatu daitekeenean. Nodo gurasok dagoeneko nodo haurrak baditu metodo honi deitu baino lehen, nodo haurrak ezabatu egingo dira.

Metodo hau elkarrizketa-koadroa bistaratu baino lehen deitu daiteke, hasierako zuhaitza eraikitzeko. Zuhaitza dinamikoki osatzeko ere deitu daiteke, bai elkarrizketa-koadro batetik bai kontrol-gertaera batetik (OnNodeExpanded gertaera erabilita).

### Sintaxia:

svc.AddSubTree(parentnode: uno, flattree: any, opt withdatavalue: bool): bool

### Parametroak:

parentnode: Nodo motako UNO objektu bat, com.sun.star.awt.tree.XMutableTreeNode motakoa.

flattree: Bi dimentsiotako matrize bat, bistaratze-balioak dituen zutabeetan ordenatuta. Horrelako matrize bat bidaltzeko, erabili GetRows metodoa SFDatabases.Database zerbitzuan aplikatuta. Bistaratuko den testua duen matrize-elementu bat Empty edo Null bada, ez da azpinodo berririk sortuko eta errenkadaren gainerakoa saltatu egingo da.

          Zuhaitz laua    >>>>    Emaitza gisa sortutako azpizuhaitza
          A1	B1	C1             |__   A1
          A1	B1	C2                   |__   B1
          A1	B2	C3                         |__  C1
          A2	B3	C4                         |__  C2
          A2	B3	C5                   |__   B2
          A3	B4	C6                         |__  C3
                                 |__   A2
                                       |__   B3
                                             |__  C4
                                             |__  C5
                                 |__   A3
                                       |__   B4
                                             |__  C6

withdatavalue: Balio lehenetsia den False erabiltzen denean, flattree matrizeko zutabe bakoitzak zuhaitz-kontrolean bistaratuko diren testuak ditu. Balioa True bada, bistaratuko diren testuak (displayvalue) 0, 2, 4... zutabeetan daude eta datu-balioak (datavalue) 1, 3, 5... zutabeetan daude.

### Adibidea:

          Dim myTree As Object, theRoot As Object, oDb As Object, vData As Variant
          Set myTree = myDialog.Controls("myTreeControl")
          Set theRoot = myTree.CreateRoot("By product category")
          Set oDb = CreateScriptService("SFDatabases.Database", "/home/.../mydatabase.odb")
          vData = oDb.GetRows("SELECT [Category].[Name], [Category].[ID], [Product].[Name], [Product].[ID] " _
              & "FROM [Category], [Product] WHERE [Product].[CategoryID] = [Category].[ID] " _
              & "ORDER BY [Category].[Name], [Product].[Name]")
          myTree.AddSubTree(theRoot, vData, WithDataValue := True)

         SQL_STMT = "SELECT [Category].[Name], [Category].[ID], [Product].[Name], [Product].[ID] \
             FROM [Category], [Product] WHERE [Product].[CategoryID] = [Category].[ID] \
             ORDER BY [Category].[Name], [Product].[Name]"
         tree = dlg.Controls('myTreeControl')
         root = tree.CreateRoot('By Product category')
         db = CreateScriptService('SFDatabases.Database', '/home/.../mydatabase.odb')
         sub_tree = db.GetRows(SQL_STMT)
         tree.AddSubTree(root, sub_tree, withdatavalue=True)

## CreateRoot

Zuhaitz-kontrolaren erro-nodo berri bat itzultzen du, com.sun.star.awt.tree.XMutableTreeNode motako UNO objektu mota gisa. Zuhaitz-erro berria lehendik dauden erro-nodoen aurrean txertatuko da. Begiratu XMutableTreeNode Application Programming Interface (API) dokumentazioan informazio xeheagorako.

Metodo honi elkarrizketa-koadroa bistaratu baino lehen deitu dakioke, hasierako zuhaitza eraikitzeko. Zuhaitza dinamikoki osatzeko ere deitu dakioke elkarrizketa-koadro batetik edo kontrol-gertaera batetik.

### Sintaxia:

svc.CreateRoot(displayvalue: str, opt datavalue: any): uno

### Parametroak:

displayvalue: Zuhaitzaren kontrol-koadroan ageri den testua.

datavalue: Nodo berriari lotutako edozein balio. datavalue kate bat, data bat edo zenbaki bat izan daiteke. Aplikagarria ez bada, ez erabili argumentu hau.

### Adibidea:

          Dim myTree As Object, myNode As Object
          Set myTree = myDialog.Controls("myTreeControl")
          Set myNode = myTree.CreateRoot("Tree starts here ...")

         tree = dlg.Controls('myTreeControl')
         node = tree.CreateRoot('Tree starts here ...')

## FindNode

Zuhaitza zeharkatzen du eta, modu errekurtsiboan eta errotik hasita, irizpideren bat betetzen duen nodo bat aurkitzen du. Aski da bat etortze batekin, bai bistaratze-balioa displayvalue ereduarekin bat etortzea bai bere datu-balioa datavalue parametroarekin bat etortzea. Konparazioak maiuskulak/minuskulak kontuan hartu ditzakete edo ez. Bat datorren lehen agerraldia com.sun.star.awt.tree.XMutableTreeNode nodo motako UNO objektu gisa itzuliko da. Begiratu XMutableTreeNode Application Programming Interface (API) dokumentazioan informazio xeheagorako.

Aurkitzen ez bada, metodoak Nothing itzuliko du, IsNull() funtzio integratuarekin probatuko dena.

Metodo honi elkarrizketa-koadroa bistaratu baino lehen deitu dakioke, hasierako zuhaitza eraikitzeko. Elkarrizketa-koadro batetik edo kontrol-gertaera batetik ere deitu dakioke.

### Sintaxia:

svc.FindNode(displayvalue: str = '', opt datavalue: any, casesensitive = False): uno

### Parametroak:

Bi argumentutako bat, displayvalue edo datavalue, zehaztu behar da. Biak badaude, bat etortze bakarra aski da nodoa hautatzeko..

displayvalue: Bat etortzeetarako erabiliko den eredua. Begiratu SF_String.IsLike() metodoa erabili daitezkeen balizko komodinak ezagutzeko. Zero luzerako kate baten berdina bada (modu lehenetsia), bistaratze-balioa ez da bilatuko.

datavalue: Nodo berriari lotutako edozein balio. datavalue kate bat, data bat edo zenbaki bat izan daiteke. Aplikagarria ez bada, ez erabili argumentu hau.

casesensitive: Balio lehenetsia False da.

### Adibidea:

          Dim myTree As Object, myNode As Object
          Set myTree = myDialog.Controls("myTreeControl")
          Set myNode = myTree.FindNode("*Sophie*", CaseSensitive := True)

         tree = dlg.Controls('myTreeControl')
         node = FindNode('*Sophie*', casesensitive=True)
         if node is None:
             # ...

## SetFocus

Ezarri fokua kontrolean. True itzuliko du fokuratzea ongi gauzatu bada.

Metodo honi sarritan elkarrizketa-koadro batetik edo kontrol-gertaera batetik deitzen zaio.

### Sintaxia:

svc.SetFocus(): bool

### Adibidea:

          Dim oControl As Object
          Set oDlg = CreateScriptService("SFDialogs.Dialog",,, "myDialog")
          Set oControl = oDlg.Controls("thisControl")
          oControl.SetFocus()

          dlg = CreateScriptService('Dialog', None, None, 'myDialog')
          ctrl = dlg.Controls('thisControl')
          ctrl.SetFocus()

## WriteLine

Gehitu lerro bat lerro anitzeko testu-eremu baten amaierari. Lerro berriaren karakterea txertatuko da halakoa behar denean. Metodoak True itzuliko du ongi gauzatzen denean.

Errore bat gertatuko da kontrola ez bada TextField motakoa edo lerro anitzekoa ez bada.

### Sintaxia:

svc.WriteLine(opt line: str): bool

          oControl.WriteLine([Line As String]) As Boolean

### Parametroak:

Line: Txertatuko den katea. Balio lehenetsia lerro hutsa da.

### Adibidea:

          Dim oDlg As Object, oControl As Object
          Set oDlg = CreateScriptService("SFDialogs.Dialog",,, "myDialog")
          Set oControl = oDlg.Controls("thisControl")
          oControl.WriteLine("a new line")

         dlg = CreateScriptService('SFDialogs.Dialog', None, None, 'myDialog')
         ctrl = dlg.Controls('thisControl')
         ctr.WriteLine("a new line")

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

Erlazionatutako gaiak

SFDialogs.Dialog zerbitzua

ScriptForge.String zerbitzua

ScriptForge.UI zerbitzua