Edukiak

# SFDocuments.FormControl zerbitzua

FormControl zerbitzuak FormDocument bateko inprimaki, azpinprimaki edo taula-kontrol batenak diren kontrolak atzitzea ahalbidetzen du. FormControl zerbitzuaren instantzia bakoitzak inprimakiaren kontrol bakarrari egiten dio erreferentzia. Zerbitzu honi esker, erabiltzaileak honakoak egin ditzake:

- FormControl instantziak ordezkatzen duen kontrolaren propietateak eskuratu eta ezarri.

- Kontrolak bistaratzen duen uneko balioa atzitu.

- Fokua desiratutako kontrolean ezarri.

FormControl zerbitzua inprimaki, azpinprimaki edo taula-kontrol batean erabiltzeko, kontrol guztiek izen bakarrak eduki behar dituzte.

Talde-izen bera partekatzen duten biratze-botoiek ere kontrol-izen bakarrak eduki behar dituzte.

FormControl zerbitzuaren xede nagusia kontrolek inprimaki batean bistaratutako propietateak eta balioak ezartzea eta eskuratzea da.

Kontrol guztiek Value propietatea dute. Hala ere, horren edukia desberdina da kontrol motaren arabera. Informazio gehiagorako, irakurri beheko Value propietatea.

Posible da kontrolei formatua ematea XControlModel eta XControlView propietateak erabilita.

SFDocuments.FormControl zerbitzuak erlazio estua du SFDocuments.Form zerbitzuarekin.

## Zerbitzuari deitzea

FormControl 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

FormControl zerbitzuari lehendik dagoen Form zerbitzu-instantzia batetik deitzen zaio bere Controls metodoaren bidez.

          Dim oDoc as Object, myForm As Object, myControl As Object
          Set oDoc = CreateScriptService("SFDocuments.Document", ThisDataBaseDocument)
          Set myForm = oDoc.Forms("formDocumentName", "formName") ' SFDocuments.Form
          Set myControl = myForm.Controls("myTextBox") ' SFDocuments.FormControl
          myControl.Value = "Current time = " & Now()

##### Python lengoaian

          from scriptforge import CreateScriptService
          from time import localtime, strftime
          bas = CreateScriptService('ScriptForge.Basic')
          doc = CreateScriptService('SFDocuments.Document', bas.ThisDatabaseDocument)
          form = doc.Forms('formDocumentName', 'formName')  # SFDocuments.Form
          control = form.Controls('myTextBox')  # SFDocuments.FormControl
          control.Value = 'Uneko ordua = ' + strftime("%a, %d %b %Y %H:%M:%S", localtime())

FormDocument bat nola ireki eta bere inprimakiak nola atzitu ikasteko, begiratu SFDocuments.Form zerbitzuaren laguntza-orria.

Beste aukera bat, FormControl instantzia SFDocuments.FormEvent zerbitzuaren bide atzitzea da. Horrek gertaera abiarazi zuen SFDocuments.FormControl klase-instantzia itzuliko du.

          Sub OnEvent(ByRef poEvent As Object)
              Dim oControl As Object
              Set oControl = CreateScriptService("SFDocuments.FormEvent", poEvent)
              ' oControl aldagaiak, orain, uneko gertaera abiarazi duen FormControl klasearen instantzia ordezkatzen du
              ' ...
          End Sub

##### Python lengoaian

          def onEvent(event: uno):
              control = CreateScriptService('SfDocuments.FormEvent', event)

Kontuan hartu aurreko adibideetan "SFDocuments." zatia beharbada ez dela sartu.

FormEvent zerbitzua inprimaki- edo kontrol-gertaera bat gertatzen denean SFDocuments.Form eta SFDocuments.FormControl zerbitzuen instantziak sortzeko besterik ez da erabiltzen.

## Kontrol motak

FormControl zerbitzua honako kontrol motekin dago erabilgarri:

Button CheckBox ComboBox CurrencyField DateField FileControl FixedText FormattedField | GroupBox HiddenControl ImageButton ImageControl ListBox NavigationBar NumericField | PatternField RadioButton ScrollBar SpinButton TableControl TextField TimeField

## Propietateak

Izena | Irakurtzeko soilik | Mota | Honi aplikagarria: | Deskribapena
--- | --- | --- | --- | ---
Action | Ez | String | Button | Botoia sakatzen denean abiaraziko den ekintza zehazten du. Onartutako balioak: none, submitForm, resetForm, refreshForm, moveToFirst, moveToLast, moveToNext, moveToPrev, saveRecord, moveToNew, deleteRecord, undoRecord.
Caption | Ez | String | Button, CheckBox, FixedText, GroupBox, RadioButton | Kontrolak bistaratuko duen testua zehazten du.
ControlSource | Bai | String | CheckBox, ComboBox, CurrencyField, DateField, FormattedField, ImageControl, ListBox, NumericField, PatternField, RadioButton, TextField, TimeField | Uneko kontrolean mapatuko den errenkada multzoaren eremua zehazten du
ControlType | Bai | String | Dena | Goian zerrendatutako kontrol motetako bat.
Default | Ez | Boolean | Button | Komando-botoietako bat 'Ados' botoi lehenetsia izango den zehazten du.
DefaultValue | Ez | Variant | CheckBox, ComboBox, CurrencyField, DateField, FileControl, FormattedField, ListBox, NumericField, PatternField, RadioButton, SpinButton, TextField, TimeField | Kontrol bat erregistro batean hasieratzeko erabiliko den balio lehenetsia zehazten du.
Enabled | Ez | Boolean | Dena (HiddenControl salbu) | Kontrola kurtsorearekin atzitu daitekeen zehazten du.
Format | Ez | String | DateField, TimeField, FormattedField (read-only) | Datak eta orduak bistaratzeko erabiliko den formatua zehazten du. Hurrengo kateetako 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 bateko edo konbinazio-koadro bateko errenkada kopurua itzultzen du.
ListIndex | Ez | Long | ComboBox, ListBox | Zerrenda-koadro batean edo konbinazio-koadro batean zein elementu dagoen hautatuta zehazten du. Hautapen anizkoitzen kasuan, lehen elementuaren indizea itzuliko da edo elementu bakarrak soilik egongo da ezarrita.
ListSource | Ez | Variant | ComboBox, ListBox | Konbinazio-koadro bateko edo zerrenda-koadro bateko datuak zehazten ditu, kate-balioz osatuta dagoen zeron oinarritutako matrize gisa. ListSourceType propietatearekin konbinatuta, taula baten, kontsulta baten edo SQL instrukzio oso baten izena eduki dezake.
ListSourceType | Ez | Integer | ComboBox, ListBox | Konbinazio-koadro bateko edo zerrenda-koadro bateko datuen mota zehazten du. com.sun.star.form.ListSourceType.* konstanteetako bat izan behar du.
Locked | Ez | Boolean | ComboBox, CurrencyField, DateField, FileControl, FormattedField, ImageControl, ListBox, NumericField, PatternField, TextField, TimeField | Kontrola irakurtzeko soilik den zehazten du.
MultiSelect | Ez | Boolean | ListBox | Zerrenda-koadro batean erabiltzaileak elementu anitz hautatu ditzakeen zehazten du.
Name | Bai | String | Dena | Kontrolaren izena.
Parent | Bai | Object | Dena | Guraso motaren arabera (inprimakia, azpinprimakia edo taula-kontrola den), SFDocuments.Form edo SFDocuments.FormControl klase-objektuaren instantzia gurasoa itzultzen du.
Picture | Ez | String | Button, ImageButton, ImageControl | Kontrolean bistaratuko den bit-mapa edo beste motaren bateko grafikoa duen fitxategi-izena zehazten du. Fitxategi-izen horrek ScriptForge.FileSystem zerbitzuaren FileNaming atributuari men egin behar dio.
Required | Ez | Boolean | CheckBox, ComboBox, CurrencyField, DateField, ListBox, NumericField, PatternField, RadioButton, SpinButton, TextField, TimeField | Kontrol bat beharrezkoa dela esaten da azpiko datuek ez dutenean null baliorik eduki behar.
Text | Bai | String | ComboBox, DateField, FileControl, FormattedField, PatternField, TextField, TimeField | Kontrolak bistaratzen duen testua atzitzeko aukera ematen du.
TipText | Ez | String | Dena (HiddenControl salbu) | Saguaren erakuslea kontrolaren gainetik pasatzen denean aholku gisa agertzen den testua zehazten du.
TripleState | Ez | Boolean | CheckBox | Kontrolaren kontrol-laukia grisez (desgaituta) agertu daitekeen ala ez zehazten du.
Value | Ez | Variant |  | Propietate hori kontrol motaren araberakoa da. Begiratu Value propietatea informazio gehiagorako.
Visible | Ez | Boolean | Dena (HiddenControl salbu) | Kontrola bistan ala ezkutuan dagoen zehazten du.
XControlModel | Bai | UNO objektua | Dena | Kontrol-eredua ordezkatzen duen UNO objektua. Begiratu API dokumentazioaren XControlModel eta UnoControlModel informazio gehiagorako.
XControlView | Bai | UNO objektua | Dena | Kontrol-ikuspegia ordezkatzen duen UNO objektua. Begiratu API dokumentazioaren XControl eta UnoControl informazio gehiagorako.

## Value propietatea

Kontrol mota | Mota | Deskribapena
--- | --- | ---
Button | Boolean | Txandakatzeko erabiltzen diren botoietan soilik aplikatu daiteke.
CheckBox | Boolearra edo osokoa | 0, False: markatu gabea 1, True: markatua 2: grisean, ezezaguna (aplikagarria TripleState True bada)
ComboBox | String | Hautatutako balioa kate gisa. ListIndex propietatea hautatutako balioaren indizea atzitzeko ordezko aukera bat da.
CurrencyField | Zenbakizkoa |
DateField | Date |
FileControl | String | ScriptForge.FileSystem zerbitzuaren FileNaming propietatearen arabera formatua eman zaion fitxategi-izen bat
FormattedField | Katea edo zenbakia |
HiddenControl | String |
ListBox | Katea edo kateen matrizea | Hautatutako errenkada(k) kate bakar gisa edo kateen matrize gisa. Balio bakarra soilik ezarri daiteke. Koadroa datu-base bati lotuta badago, propietate honek azpiko datuak eskuratzen edo ezartzen ditu. Bestela, bistaratzen ari diren datuak eskuratzen edo ezartzen ditu.
NumericField | Zenbakizkoa |
PatternField | String |
RadioButton | Boolean | Botoi bakoitzak bere izena du. 'RadioButton' kontrol anitzak elkarri lotuta daude talde-izen bera partekatzen dutenean. 'RadioButton' bat True bada, hari lotutako beste biratze-botoiak automatikoki False bihurtuko dira
ScrollBar | Zenbakizkoa | Aurredefinitutako mugen barruan egon behar du
SpinButton | Zenbakizkoa | Aurredefinitutako mugen barruan egon behar du
TextField | String | Eremuan agertuko den testua
TimeField | Date |

## Gertaeraren propietateak

Beheko propietateek gertaerak abiarazitako scripta definitzen duten URI kateak itzultzen edo ezartzen ditu.

Izena | Irakurtzeko soilik | Deskribapena Basic IDEan etiketatu den moduan
--- | --- | ---
OnActionPerformed | Ez | Ekintza exekutatzean
OnAdjustmentValueChanged | Ez | Doitzean
OnApproveAction | Ez | Ekintza onartzean
OnApproveReset | Ez | Berrezarri aurretik
OnApproveUpdate | Ez | Eguneratu aurretik
OnChanged | Ez | Aldatzean
OnErrorOccurred | Ez | Errorea gertatzean
OnFocusGained | Ez | Fokua hartzean
OnFocusLost | Ez | Fokua galtzean
OnItemStateChanged | Ez | Elementuaren egoera aldatzean
OnKeyPressed | Ez | Tekla sakatzean
OnKeyReleased | Ez | Tekla askatzean
OnMouseDragged | Ez | Sagua mugitzean tekla sakatuta dagoenean
OnMouseEntered | Ez | Sagua barnean dagoenean
OnMouseExited | Ez | Sagua kanpoan dagoenean
OnMouseMoved | Ez | Sagua mugitzean
OnMousePressed | Ez | Saguaren botoia sakatzean
OnMouseReleased | Ez | Saguaren botoia askatzean
OnResetted | Ez | Berrezarri ondoren
OnTextChanged | Ez | Testua aldatzean
OnUpdated | Ez | Eguneratu ondoren

URI kateei buruzko informazio gehiago jasotzeko, begiratu scriptgintzako lan-markoaren URI espezifikazioa.

FormControl zerbitzuaren metodoen zerrenda
Controls | SetFocus

## Controls

Metodo hau TableControl motako kontrolei soilik aplika dakizkieke. Itzulitako balioa emandako argumentuen araberakoa izango da.

Aukerakoa den controlname argumenturik ez badago, zeron oinarritutako matrize bat itzuliko da, kontrol guztien izenak dituena.

Bestalde, controlname ematen bada, metodoak zehaztutako kontrolari dagokion FormControl klase-instantzia bat itzuliko du.

### Sintaxia:

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

svc.Controls(controlname: str): svc

### Parametroak:

controlname: Baliozko kontrol-izen bat, maiuskulak/minuskulak bereizten dituen kate gisa. Ez bada ematen, kontrol-izenen zerrenda zeron oinarritutako matrize gisa itzuliko da.

### Adibidea:

          Dim myGrid As Object, myList As Variant, myControl As Object
          Set myGrid = myForm.Controls("myTableControl") ' SFDocuments.FormControl
          ' "myTableControl" elementuan dauden kontrol guztien izenak dituen matrize bat itzultzen du
          myList = myGrid.Controls()
          ' "myCheckBox" kontrolari dagokion FormControl klase-instantzia itzultzen du
          Set myControl = myGrid.Controls("myCheckBox")

Python erabilita:

          grid = form.Controls('myTableControl')  # SFDocuments.FormControl
          control_names = form.Controls()
          control = grid.Controls('myCheckBox')  # SFDocuments.FormControl

## SetFocus

Fokua kontrolean ezartzen du. True itzultzen du fokuratzea ongi gauzatzen bada.

Metodo honi sarritan inprimaki batetik edo kontrol-gertaera batetik deitzen zaio.

### Sintaxia:

svc.SetFocus(): bool

### Adibidea:

          Dim oDoc As Object, oForm As Object, oControl As Object
          Set oDoc = CreateScriptService("SFDocuments.Document", ThisComponent)
          Set oForm = oDoc.Forms(0)
          Set oControl = oForm.Controls("thisControl") ' SFDocuments.FormControl
          oControl.SetFocus()

##### Python lengoaian

         bas = CreateScriptService('ScriptForge.Basic')
         doc = CreateScriptService('SFDocuments.Document', bas.ThisComponent)
         form = doc.Forms(0)
         control = form.Controls('thisControl')  # SFDocuments.FormControl
         control.SetFocus()

## Adibide gehiago

Behean, FormControl zerbitzuaren erabilera azaltzen duten bi adibide.

Lehen adibidean, hirien izenak dituen konbinazio-koadro bateko uneko balioa irakurtzen da eta inprimaki bateko testu finkoko kontrol batean idazten da.

         Dim oDoc as Object, myForm as Object, myControl as Object
         Set oDoc = CreateScriptService("SFDocuments.Document", ThisDataBaseDocument)
         myForm = oDoc.Forms("formDocumentName", "formName")
         Dim lbCity : lbCity = myForm.Controls("labelCity")
         Dim cbCity : cbCity = myForm.Controls("comboboxCity")
         lbCity.Caption = "Selected City: " & cbCity.Value

##### Python lengoaian

         bas = CreateScriptService('ScriptForge.Basic')  # Basic-en antzeko metodoak
         doc = CreateScriptService('SFDocuments.Document', bas.ThisDatabaseDocument)
         form = doc.Forms('formDocumentName', 'formName')
         lbl_city = form.Controls('labelCity')
         combo_city = form.Controls('comboboxCity')
         lbl_city.Caption = "Hautatutako hiria: " + combo_city.Value

Hurrengo kode-zatia talde-izen bera duten biratze-botoiak prozesatzeko erabili daiteke. Hurrengo adibidean, demagun optA, optB eta optC izenak dituzten hiru biratze-botoi daudela, eta hautatutako kontrolaren epigrafea bistaratu nahi dugula.

         Dim oDoc as Object, myForm as Object
         Set oDoc = CreateScriptService("SFDocuments.Document", ThisDataBaseDocument)
         myForm = oDoc.Forms("formDocumentName", "formName")
         Dim optNames As Object : optNames = Array("optA", "optB", "optC")
         Dim optControl as Object, opt as Variant
         For Each opt In optNames
             optControl = myForm.Controls(opt)
             If optControl.Value = True Then
                 MsgBox "Hautatutako aukera: " & optControl.Caption
                 Exit For
             End If
         Next opt

##### Python lengoaian

         bas = CreateScriptService('ScriptForge.Basic')  # Basic-en antzeko metodoak
         doc = CreateScriptService('SFDocuments.Document', bas.ThisDatabaseDocument)
         form = doc.Forms('formDocumentName', 'formName')
         radio_buttons = ['optA', 'optB', 'optC']
         for name in radio_buttons:
            control = form.controls(name)
            if control.Value == True:
               bas.MsgBox('Hautatutako aukera: ' + control.Caption)
               break

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

ScriptForge.Basic zerbitzua

SFDocuments.Form zerbitzua

SFDocuments.Document zerbitzua

Emaguzu laguntza!