Wobsah

# Słužba SFDocuments.FormControl

Słužba FormControl přistup k wodźenskim elementam skići, kotrež k formularej, podformularej abo tabelowemu wodźenskemu elementej z FormDocument słušeja. Kóžda instanca słužby FormControl so na jednotliwy wodźenski element we formularje poćahuje. Tuta słužba wužiwarjam zmóžnja:

- Kajkosće wodźenskeho element, kotryž so přez instancu FormControl reprezentuje, wobstarać a nastajić.

- Přistup k aktualnej hódnoće, kotraž so přez wodźenski element pokazuje.

- Fokus na požadany wodźenski element stajić.

Zo byšće słužbu FormControl we wěstym formularje, podformularje abo tabelowym wodźenskim elemenće wužiwał, dyrbja wšě wodźenske elementy jónkróćne mjena měć.

Opciske tłóčatka, kotrež samsne skupinske mjeno dźěla, dyrbja tež jónkróćne mjena wodźenskich elementow měć.

Hłowny zaměr słužby FormControl je nastajenje a wotwołowanje kajkosćow a hódnotow, kotrež so přez wodźenske elementy we formularje pokazuja.

Wšě wodźenske elementy maja kajkosć Value. Jeje wobsah pak po typje wodźenskeho elementa wariěruje. Za dalše informacije čitajće deleka Kajkosć Value.

Je tež móžno, wodźenske elementy přez kajkosći XControlModel a XControlView formatěrować.

Słužba SFDocuments.FormControl je jara na słužbu SFDocuments.Form podobna.

## Słužbowe wuwołanje

Před wužiwanjom słužby FormControl dyrbi so biblioteka ScriptForge začitać abo importować:

• Makra Basic sej wužaduja, zo so biblioteka ScriptForge z pomocu slědowaceho přikaza začituje:
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
• Skripty Python sej import z modula scriptforge wužaduja:
from scriptforge import CreateScriptService

Słužba FormControl so z eksistowaceje słužboweje instancy Form přez swoju metodu Controls wuwołuje.

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

##### W Python

          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 = 'Aktualny čas = ' + strftime("%a, %d %b %Y %H:%M:%S", localtime())

Zo byšće wjace wo tym zhonił, kak móžeće FormDocument wočinić a přistup k jeho formularam dóstać, hlejće stronu pomocy słužby SFDocuments.Form.

Jako alternatiwa da so instanca FormControl přez słužbu SFDocuments.FormEvent wotwołać, kotraž klasowu instancu SFDocuments.FormControl wróća, kotraž je podawk wuwabiła.

          Sub OnEvent(ByRef poEvent As Object)
              Dim oControl As Object
              Set oControl = CreateScriptService("SFDocuments.FormEvent", poEvent)
              ' oControl nětko instancu klasy FormControl reprezentuje, kotraž je aktualny podawk wuwabiła
              ' ...
          End Sub

##### W Python

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

Dźiwajće na to, zo je móžno, w předchadnych přikładach prefiks "SFDocuments." wuwostajić.

Słužba FormEvent so jenož wužiwa, zo by instancy słužbow SFDocuments.Form a SFDocuments.FormControl wutworiła, hdyž so formular abo wodźenski element wotměwa.

## Typy wodźenskich elementow

Słužba FormControl je za slědowace typy wodźenskich elementow k dispoziciji:

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

## Kajkosće

Mjeno | Přećiwo pisanju škitany | Typ | Nałožujomny na | Wopisanje
--- | --- | --- | --- | ---
Action | Ně | String | Button | Podawa akciju, kotraž so wuwabi, hdyž so na tłóčatko klika. Akceptowane hódnoty su: none, submitForm, resetForm, refreshForm, moveToFirst, moveToLast, moveToNext, moveToPrev, saveRecord, moveToNew, deleteRecord, undoRecord.
Caption | Ně | String | Button, CheckBox, FixedText, GroupBox, RadioButton | Podawa tekst, kotryž so přez wodźenski element pokazuje.
ControlSource | Haj | String | CheckBox, ComboBox, CurrencyField, DateField, FormattedField, ImageControl, ListBox, NumericField, PatternField, RadioButton, TextField, TimeField | Podawa polo Rowset, kotrež je aktualnemu wodźenskemu elementej přirjadowane.
ControlType | Haj | String | Wšě | Jedyn z horjeka nalistowanych typow wodźenskich elementow.
Default | Ně | Boolean | Button | Podawa, hač přikazowe tłóčatko je standardne tłóčatko W porjadku.
DefaultValue | Ně | Variant | CheckBox, ComboBox, CurrencyField, DateField, FileControl, FormattedField, ListBox, NumericField, PatternField, RadioButton, SpinButton, TextField, TimeField | Podawa standardnu hódnotu, kotraž so wužwa, zo by wodźenski element w nowej datowej sadźbje inicializowała.
Enabled | Ně | Boolean | Wšě (nimo HiddenControl) | Podawa, hač wodźenski element je z kursorom přistupny.
Format | Ně | String | DateField, TimeField, FormattedField (read-only) | Podawa format, kotryž so wužiwa, zo by datumy a časy pokazał. Dyrbi jedyn ze slědowacych znamješkowych rjećazkow być: Za datumy: "Standard (short)", "Standard (short LL)", "Standard (short LLLL)", "Standard (long)", "DD/MM/LL", "MM/DD/LL", "LL/MM/DD", "DD/MM/LLLL", "MM/DD/LLLL" , "LLLL/MM/DD", "LL-MM-DD", "LLLL-MM-DD". Za časy: "24h short", "24h long", "12h short", "12h long".
ListCount | Haj | Long | ComboBox, ListBox | Wróći ličbu linkow w lisćinowym abo kombinaciskim polu.
ListIndex | Ně | Long | ComboBox, ListBox | Podawa, kotry zapisk je w lisćinowym abo kombinaciskim polu wubrany. Při wjacorym wuběrje so indeks prěnjeho zapiska wróća abo so jenož jedyn zapisk staja.
ListSource | Ně | Variant | ComboBox, ListBox | Podawa daty, kotrež su w kombinaciskim abo lisćinowym polu jako na nuli bazowaca matriks znamješkowych rjećazkow wobsahowane. Móže w kombinaciji z ListSourceType tež mjeno tabele, wotprašowanja abo dospołneho přikaza SQL wobsahować.
ListSourceType | Ně | Integer | ComboBox, ListBox | Podawa typ datow, kotryž je w kombinaciskim abo lisćinowym polu wobsahowany. Dyrbi jedna z konstantow com.sun.star.form.ListSourceType.* być.
Locked | Ně | Boolean | ComboBox, CurrencyField, DateField, FileControl, FormattedField, ImageControl, ListBox, NumericField, PatternField, TextField, TimeField | Podawa, hač wodźenski element je přećiwo pisanju škitany.
MultiSelect | Ně | Boolean | ListBox | Podawa, hač wužiwar móže wjacore zapiski w lisćinowym polu wubrać.
Name | Haj | String | Wšě | Mjeno wodźenskeho elementa.
Parent | Haj | Object | Wšě | Wotwisujo wot nadrjadowaneho typa, formular, podformular abo tabelowy wodźenski element, nadrjadowanu klasowu objektowu instancu SFDocuments.Form abo SFDocuments.FormControl wróća.
Picture | Ně | String | Button, ImageButton, ImageControl | Podawa datajowe mjeno, kotryž bitmap abo druhi grafikowy typ wobsahuje, kotryž so ma na wodźenskim elemenće pokazać. Datajowe mjeno dyrbi atributej FileNaming słužby ScriptForge.FileSystem wotpowědować.
Required | Ně | Boolean | CheckBox, ComboBox, CurrencyField, DateField, ListBox, NumericField, PatternField, RadioButton, SpinButton, TextField, TimeField | Wodźenski element so jako trěbny mjenuje, hdyž daty, na kotrež so zepěra, njesmědźa hódnotu null wobsahować.
Text | Haj | String | ComboBox, DateField, FileControl, FormattedField, PatternField, TextField, TimeField | Zmóžnja přistup k tekstej, kotryž so přez wodźenski element pokazuje.
TipText | Ně | String | Wšě (nimo HiddenControl) | Podawa tekst, kotryž so jako pomocny tekst jewi, hdyž pokazowak myški nad wodźenski element pohibujeće.
TripleState | Ně | Boolean | CheckBox | Podawa, jeli kontrolny kašćik móže so wosłabić (šěry) abo nic.
Value | Ně | Variant |  | Tuta kajkosć wot aktualneho typa wodźenskeho elementa wotwisuje. Hlejće Kajkosć Value za dalše informacije.
Visible | Ně | Boolean | Wšě (nimo HiddenControl) | Podawa, hač wodźenski element je schowany abo widźomny.
XControlModel | Haj | Objekt UNO | Wšě | Objekt UNO, kotryž model wodźenskeho elementa reprezentuje. Hlejće XControlModel a UnoControlModel w dokumentaciji API za dalše informacije.
XControlView | Haj | Objekt UNO | Wšě | Objekt UNO, kotryž napohlad wodźenskeho elementa reprezentuje. Hlejće XControl a UnoControl w dokumentaciji API za dalše informacije.

## Kajkosć Value

Typ wodźenskeho elementa | Typ | Wopisanje
--- | --- | ---
Button | Boolean | Płaći jenož za přepinanske tłóčatka.
CheckBox | Boolean (logiska hódnota) abo Integer (cyła ličba) | 0, False: njezmóžnjeny 1, True: zmóžnjeny 2: zešěrjeny, njeznaty (nałožujomny, jeli TripleState je True)
ComboBox | String | Wubrana hódnota jako znamješkowy rjećazk. Kajkosć ListIndex je alternatiwna móžnosć za přistup k indeksej wubraneje hódnoty.
CurrencyField | Numeriski |
DateField | Date |
FileControl | String | Datajowe mjeno, kotrež je po kajkosći FileNaming słužby ScriptForge.FileSystem sformatěrowane
FormattedField | Znamješkowy rjećazk abo numeriski |
HiddenControl | String |
ListBox | Znamješkowy rjećazk abo matriks znamješkowych rjećazkow | Wubrane linki jako jednotliwy znamješkowy rjećazk abo matriks znamješkowych rjećazkow. Da so jenož jedna hódnota stajić. Jeli polo je z datowej banku zwjazane, tuta kajkosć daty, na kotrež so zepěra, wotwołuje abo staja. Hewak so daty, kotrež so pokazuja, wotwołuje abo staja.
NumericField | Numeriski |
PatternField | String |
RadioButton | Boolean | Kóžde tłóčatko ma swójske mjeno. Wjacore opciske tłóčatka so jedne z druhim zwjazuja, hdyž samsne skupinske mjeno maja. Jeli opciske tłóčatko je na True stajene, so druhe přisłušne tłóčatka awtomatisce na False stajeja.
ScrollBar | Numeriski | Dyrbi w předdefinowanych mjezach być
SpinButton | Numeriski | Dyrbi w předdefinowanych mjezach być
TextField | String | Tekst, kotryž so w polu jewi.
TimeField | Date |

## Podawkowe kajkosće

Slědowace kajkosće znamješkowe rjećazki URI wróćeja abo stajeja, kotrež skript definuja, kotryž je so přez podawk wuwabił.

Mjeno | Přećiwo pisanju škitany | Wopisanje jako w Basic IDE popisane
--- | --- | ---
OnActionPerformed | Ně | Akciju wuwjesć
OnAdjustmentValueChanged | Ně | Při přiměrjenju
OnApproveAction | Ně | Akciju wobkrućić
OnApproveReset | Ně | Před wróćostajenjom
OnApproveUpdate | Ně | Před aktualizaciju
OnChanged | Ně | Změnjeny
OnErrorOccurred | Ně | Zmylk je wustupił
OnFocusGained | Ně | Při dóstawanju fokusa
OnFocusLost | Ně | Při zhubjenju fokusa
OnItemStateChanged | Ně | Status zapiska je so změnił
OnKeyPressed | Ně | Tasta stłóčena
OnKeyReleased | Ně | Tasta pušćena
OnMouseDragged | Ně | Pohib myški při stłóčenej tasće
OnMouseEntered | Ně | Myška nutřka
OnMouseExited | Ně | Myška wonka
OnMouseMoved | Ně | Pohib myški
OnMousePressed | Ně | Tasta myški stłóčena
OnMouseReleased | Ně | Tasta myški pušćena
OnResetted | Ně | Po wróćostajenju
OnTextChanged | Ně | Tekst je so změnił
OnUpdated | Ně | Po aktualizaciji

Zo byšće wjace wo znamješkowych rjećazkach URI zhonił, hlejće Scripting Framework URI Specification.

Lisćina metodow w słužbje FormControl
Controls | SetFocus

## Controls

Tuta metoda je jenož na jedyn z wodźenskich elementow typa TabelControl nałožujomna. Wróćena hódnota wot argumentow wotwisuje, kotrež su k dispoziciji.

Jeli opcionalny argument controlname faluje, so na nuli bazowaca matriks wróći, kotrež mjena wšěch wodźenskich elementow wobsahuje.

Jeli z druheje strony je controlname k dispoziciji, metoda klasowu instancu FormControl wróća, kotraž podatemu wodźenskemu elementej wotpowěduje.

### Syntaksa:

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

svc.Controls(controlname: str): svc

### Parametry:

controlname: Płaćiwe mjeno wodźenskeho elementa jako znamješkowy rjećazk, kotryž na wulkopisanje dźiwa. Jeli faluje, so lisćina mjeno wodźenskich elementow jako matriks z bazu nula wróći.

### Přikład:

          Dim myGrid As Object, myList As Variant, myControl As Object
          Set myGrid = myForm.Controls("myTableControl") ' SFDocuments.FormControl
          ' Wróći matriks z mjenami wšěch wodźenskich elementow w "myTableControl"
          myList = myGrid.Controls()
          ' Wróći klasowu instancu FormControl, kotraž "myCheckBox" wotpowěduje
          Set myControl = myGrid.Controls("myCheckBox")

Při wužiwanju Python:

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

## SetFocus

Staja fokus na wodźenski element. Wróći True, jeli fokusěrowanje běše wuspěšne.

Tuta metoda so husto z formulara abo podawka wodźenskeho elementa wuwołuje.

### Syntaksa:

svc.SetFocus(): bool

### Přikład:

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

##### W Python

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

## Přidatne přikłady

Deleka stej dwaj přikładaj, kotrejž wužiwanje słužby FormControl ilustruje.

Prěni přikład aktualnu hódnotu w kombinaciskim polu čita, kotrež mjena městnow wobsahuje a pisa ju do wodźenskeho elementa FixedTest we formularje:

         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

##### W Python

         bas = CreateScriptService('ScriptForge.Basic') # Metody, kotrež su na Basic podobne
         doc = CreateScriptService('SFDocuments.Document', bas.ThisDatabaseDocument)
         form = doc.Forms('formDocumentName', 'formName')
         lbl_city = form.Controls('labelCity')
         combo_city = form.Controls('comboboxCity')
         lbl_city.Caption = "Wubrane město: " + combo_city.Value

Slědowaca kodowa šlipka da so wužiwać, zo by opciske tłóčatka předźěłała, kotrež samsne skupinske mjeno maja. Předstajće sej, zo w tutym přikładźe su tři opciske tłóčatka z mjenami optA, optB a opC a chcemy popis wubraneho wodźenskeho elementa pokazać.

         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 "Wubrana opcija: " & optControl.Caption
                 Exit For
             End If
         Next opt

##### W Python

         bas = CreateScriptService('ScriptForge.Basic') # Metody, kotrež su na Basic podobne
         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('Wubrana opcija: ' + control.Caption)
               break

Wšě rutiny Basic ScriptForge abo identifikatory, kotrež so z podsmužku „_“ započinaja, su za interne wužiwanje wuměnjene. Njejsu za to myslene, so w makrach Basic abo skriptach Python wužiwać.

Podobne temy

Słužba ScriptForge.Basic

Słužba SFDocuments.Form

Słužba SFDocuments.Document

Prošu podpěrajće nas!