Innhald

# Teenesta SFDocuments.FormControl

Tenesta FormControl gjev tilgang til kontrollane knytte til eit skjema, underskjema eller ein tabellkontroll for eit FormDocument. Kvar førekomst av FormControl-tenesta refererer til eitt enkelt kontrollelement i skjemaet. Denne tenesta tillèt brukarane å:

- Finn og set eigenskapane for kontrollelementet representert av førekomsten FormControl.

- Få tilgang til den gjeldande verdien vist av kontrollelementet.

- Set fokus på det ønskte kontrollelementet.

For å bruka tenesta FormControl i eit bestemt skjema, underskjema eller ein bestemt tabellkontrol, må alle kontrollane ha eintydige namn.

Radioknappar som høyrer til same gruppa, må også ha eintydige kontrollnamn.

Hovudføremålet med tenesta FormControl er å setja og henta eigenskapar og verdiar viste av kontrollelement i eit skjema.

Alle kontrollelement har eigenskapen Value. Innhaldet vil variera etter kva type kontrollelementet er. Du finn meir om dette nedanfor under eigenskapen Value .

Det er også mogleg å formatera kontrollelementa gjennom eigenskapane XControlModel og XControlView.

Tenesta SFDialogs.FormControl er i nær slekt med tenesta SFDocuments.Form.

## Oppkall av tenester

Før du brukar tenesta DialogControl må biblioteket ScriptForge vera lasta inn eller importert:

• Grunnleggjande makroar krev innlasting av biblioteket ScriptForge ved hjelp av denne setninga:
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
• Python-skript krev import frå scriptforge-modulen:
from scriptforge import CreateScriptService

Tenesta FormControl vert kalla opp frå ein tenesteførekomst av Form gjennom metoden Controls.

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

##### I 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 = 'Current Time = ' + strftime("%a, %d %b %Y %H:%M:%S", localtime())

Viss du vil læra meir om korleis opna eit FormDocument og få tilgang til skjemaa der, kan du sjå i hjelpsida for tenesta SFDocuments.Form.

Alternativt kan ein førekomst av FormControl hentast gjennom tenesta SFDocuments.FormEvent som returnerer klassehendinga SFDocuments.FormControl som utløyste hendinga.

          Sub OnEvent(ByRef poEvent As Object)
              Dim oControl As Object
              Set oControl = CreateScriptService("SFDocuments.FormEvent", poEvent)
              ' oControl representerer no førekomsten av klassen FormControl, som utløyste den gjeldande hendinga
              ' ...
          End Sub

##### I Python

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

Merk at i dei tidlegare eksempla kan prefikset "SFDocuments." sløyfast.

Tenesta FormEvent vert brukt berre til å laga førekomstar av tenestene SFDocuments.Form og SFDocuments.FormControl når når det dukkar opp ei skjema- eller kontrollhending.

## Kontrollelementtypar

Tenesta FormControl er tilgjengeleg for desse kontrollelementtypane:

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

## Eigenskapar

Namn | Skriveverna | Type | Gjeld for | Beskriving
--- | --- | --- | --- | ---
Action | Nei | String | Button | Spesifiserer handlinga som vert utløyst når det vert trykt på knappen. Godkjende verdiar er: none, submitForm, resetForm, refreshForm, moveToFirst, moveToLast, moveToNext, moveToPrev, saveRecord, moveToNew, deleteRecord, undoRecord.
Caption | Nei | String | Button, CheckBox, FixedText, GroupBox, RadioButton | Spesifiserer teksten som vert vist av kontrollelementet.
ControlSource | Ja | String | CheckBox, ComboBox, CurrencyField, DateField, FormattedField, ImageControl, ListBox, NumericField, PatternField, RadioButton, TextField, TimeField | Spesifiserer «rowset»-feltet knytt til den gjeldande kontrollen.
ControlType | Ja | String | Alt | Ein av kontrollelementtypane lista opp ovanfor.
Default | Nei | Boolean | Button | Spesifiserer om ein av kommandoknappane er standardknappen «OK».
DefaultValue | Nei | Variant | CheckBox, ComboBox, CurrencyField, DateField, FileControl, FormattedField, ListBox, NumericField, PatternField, RadioButton, SpinButton, TextField, TimeField | Spesifiserer standardverdien som skal brukast for å initialisere eit kontrollelement i ein ny post.
Enabled | Nei | Boolean | Alle (unnateke "HiddenControl") | Spesifiserer om kontrollelementet er tilgjengeleg med markøren.
Format | Nei | String | DateField, TimeField, FormattedField (read-only) | Spesifiserer formatet som vert brukt for å visa datoar og klokkeslett. Det må vera ein av desse strengane: For datoar: "Standard (kort)", "Standard (kort ÅÅ)", "Standard (kort ÅÅÅÅ)", "Standard (lang)", "DD/MM/ÅÅ", "MM/DD/ÅÅ", "ÅÅ/MM/DD", "DD/MM/ÅÅÅÅ", "MM/DD/ÅÅÅÅ" , "ÅÅÅÅ/MM/DD", "ÅÅ-MM-DD", "ÅÅÅÅ-MM-DD". For klokkeslett: "24t kort", "24t lang", "12t kort", "12t lang".
ListCount | Ja | Long | ComboBox, ListBox | Returnerer talet på rader i eit listefelt eller ein kombinasjonsboks.
ListIndex | Nei | Long | ComboBox, ListBox | Spesifiserer kva for element som er merkt i eit listefelt eller ein kombinasjonsboks. I tilfelle det er merkt fleire element, vert indeksen for det første elementet returnert eller det vert sett berre eitt element.
ListSource | Nei | Variant | ComboBox, ListBox | Spesifiserer dataa som er i ein kombinasjonsboks eller eit listefelt som ei nullbasert matrise av strengverdiar. Kombinert med ListSourceType kan det også innehalda namnet på ein tabell, ei spørjing eller eit fullstendig SQL-uttrykk.
ListSourceType | Nei | Integer | ComboBox, ListBox | Spesifiserer datatypen som er i ein kombinasjonsboks eller eit listefelt. Det må vera ein av konstantane i com.sun.star.form.ListSourceType.*.
Locked | Nei | Boolean | ComboBox, CurrencyField, DateField, FileControl, FormattedField, ImageControl, ListBox, NumericField, PatternField, TextField, TimeField | Spesifiserer om kontrollelementet er skriveverna.
MultiSelect | Nei | Boolean | ListBox | Spesifiserer om brukaren kan velja fleire element i ein listeboks.
Name | Ja | String | Alle | Namnet på kontrollelementet
Parent | Ja | Object | Alle | Avhengig av den overordna typen, returnerer eit skjema, eit underskjema eller eit tabellkontrollelement den overordna klasseobjekt-førekomsten SFDocuments.Form eller SFDocuments. FormControl.
Picture | Nei | String | Button, ImageButton, ImageControl | Spesifiserer at filnamnet som inneheld punktgrafikk eller ein annan type grafikk som skal visast på det gjevne kontrollelementet. Filnamnet må vera i samsvar med attributten FileNaming til ScriptForge.FileSystem.
Required | Nei | Boolean | CheckBox, ComboBox, CurrencyField, DateField, ListBox, NumericField, PatternField, RadioButton, SpinButton, TextField, TimeField | Eit kontrollelement vert kalla nødvendig når dei underliggjande dataa ikkje kan innehalda verdien null.
Text | Ja | String | ComboBox, DateField, FileControl, FormattedField, PatternField, TextField, TimeField | Gjev tilgang til teksten som vert vist av kontrollelementet.
TipText | Nei | String | Alle (unnateke "HiddenControl") | Spesifiserer teksten som vert vist som i ei hjelpeboble når du held musepeikaren over kontrollelementet.
TripleState | Nei | Boolean | CheckBox | Bestemmer om kontrollelementet for avkryssingsboksen kan vera nedtona (gråa ut) eller ikkje.
Value | Nei | Variant |  | Denne eigenskapen avhenger av gjeldende kontrollelementtype. For meir informasjon, sjå The Value property.
Visible | Nei | Boolean | Alle (unnateke "HiddenControl") | Bestemmer om kontrollelementet skal vera gøymt eller synleg.
XControlModel | Ja | UNO objekt | Alle | UNO-objektet som representer modellen for kontrollelementet. Sjå detaljert informasjon i UnoControlModel og UnoControlModel i dokumentasjonen for API-en ( Application Programming Interface).
XControlView | Ja | UNO objekt | Alle | UNO-objektet som representer modellen for kontrollelementet. Sjå detaljert informasjon i XControl og UnoControl i dokumentasjonen for API-en ( Application Programming Interface).

## Value-eigenskapen

Kontrollelementtype | Type | Beskriving
--- | --- | ---
Button | Boolean | Gjeld berre for å slå knappar av og på.
CheckBox | Boolsk eller heiltal | 0, False: ikkje kontrollert 1, True: kontrollertt 2: gråa ut, veit ikkje (gjeld viss TripleState er True)
ComboBox | String | Den valde verdien som ein streng. Eigenskapen ListIndex er ei alternativ innstilling for å få tilgang til den valde verdien.
CurrencyField | Numerisk |
DateField | Date |
FileControl | String | Eit filnamn formatert etter eigenskapen FileNaming i tenesta ScriptForge.FileSystem
FormattedField | Streng eller numerisk |
HiddenControl | String |
ListBox | Streng eller ei matrise av strengar | Den valde rada eller dei valde radene som ein enkelt streng eller ei matrise av strengar. Berre éin verdi kan setjast. Viss feltet er lenkja til databasen, vil denne eigenskapen henta eller setja dei underliggjande dataa. Ellers hentar eller set han dataa som vert viste.
NumericField | Numerisk |
PatternField | String |
RadioButton | Boolean | Kvar knapp har sit eige namn. Fleire radioknapp-kontrollar er knytte saman når dei har felles gruppenamn. Viss ein radioknapp er sett til True, vert dei andre knappane i gruppa automatisk sette til False.
ScrollBar | Numerisk | Må vera innføre dei førehandsdefinerte grensene
SpinButton | Numerisk | Må vera innføre dei førehandsdefinerte grensene
TextField | String | Teksten som vert vist i feltet
TimeField | Date |

## Hendingseigenskapar

Eigenskapane nedanfor returnerer eller set URI-strengar som definerer eit skript som vert opna av hendinga.

Namn | Skriveverna | Beskriving ut frå etiketten i Basic IDE
--- | --- | ---
OnActionPerformed | Nei | Utfør handling
OnAdjustmentValueChanged | Nei | Ved justering
OnApproveAction | Nei | Godta handling
OnApproveReset | Nei | Før nullstilling
OnApproveUpdate | Nei | Før oppdatering
OnChanged | Nei | Endra
OnErrorOccurred | Nei | Det oppstod ein feil
OnFocusGained | Nei | Når han får fokus
OnFocusLost | Nei | Når han mistar fokus
OnItemStateChanged | Nei | Elementstatus endra
OnKeyPressed | Nei | Taste trykt
OnKeyReleased | Nei | Taste sleppt
OnMouseDragged | Nei | Musa flytt medan ein tast er trykt
OnMouseEntered | Nei | Mus innanfor
OnMouseExited | Nei | Mus utanfor
OnMouseMoved | Nei | Mus flytt
OnMousePressed | Nei | Museknapp trykt ned
OnMouseReleased | Nei | Museknapp sleppt opp
OnResetted | Nei | Etter tilbakestilling
OnTextChanged | Nei | Tekst endra
OnUpdated | Nei | Etter oppdatering

Du kan læra meir om URI-strengar i Scripting Framework URI Specification.

Liste over metodar i tenesta FormControl
Controls | SetFocus

## Controls

Denne metoden gjeld berre for kontrollelement av typen TableControl (tabelkontrol). Den returnerte verdien avhenger av dei gjevne parameterane.

Viss det valfrie argumentet controlname manglar, vert det returnert ei nullbasert matrise med namna på alle kontrollelementa.

På den andre sida, viss controlname er gjeve, returnerer metoden ein klasse-førekomst av FormControl som svarar til det gjevne kontrollelementet.

### Syntaks:

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

svc.Controls(controlname: str): svc

### Parametrar:

controlname: Eit gyldig kontrollelementnamn som ein streng (som skil mellom små og store bokstavar). Viss denne manglar vert lista over kontrollelementnamn returnert som ei nullbasert matrise.

### Eksempel:

          Dim myGrid As Object, myList As Variant, myControl As Object
          Set myGrid = myForm.Controls("myTableControl") ' SFDocuments.FormControl
          ' Returnerer ei matrise med namna på alle kontrollelementa i «myTableControl»
          myList = myGrid.Controls()
          ' Returnerer klasseførekomsten FormControl som svarar til «myCheckBox»
          Set myControl = myGrid.Controls("myCheckBox")

Med Python:

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

## SetFocus

Set fokus på kontrollelementet. Returner Sann viss fokuseringa lukkast.

Denne metoden vert ofte kalla opp frå eit skjema eller ei kontrollhending.

### Syntaks:

svc.SetFocus(): bool

### Eksempel:

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

##### I Python

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

## Fleire eksempel

Nedanfor er det to eksempel som viser bruken av tenesta FormControl.

Det første eksempelet les gjeldande verdi i ein kombinasjonsboks som inneheld bynamn, og skriv det til «FixedTest» i eit skjema:

         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

##### I Python

         bas = CreateScriptService('ScriptForge.Basic')  # Basic-liknande metodar
         doc = CreateScriptService('SFDocuments.Document', bas.ThisDatabaseDocument)
         form = doc.Forms('formDocumentName', 'formName')
         lbl_city = form.Controls('labelCity')
         combo_city = form.Controls('comboboxCity')
         lbl_city.Caption = "Vald by: " + combo_city.Value

Den neste kodesnutten kan brukast til å handsama radioknapp-kontrollar som har felles gruppenamn. I dette eksempelet går ein ut frå at det er tre radioknappar med namna optA, optB og optC og me ønskjer å visa teksten for det valde kontrollelementet.

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

##### I Python

         bas = CreateScriptService('ScriptForge.Basic')  # Basic-liknande metodar
         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('Vald innstilling: ' + control.Caption)
               break

Alle ScriptForge Basic-rutinane og -identifikatorane som vert innleidde med understrek «_» er reserverte for internt bruk. Dei er ikkje meint brukte i Basic-makroar.

Liknande emne

Tenesta ScriptForge.Basic

Tenesta SFDocuments. Form

Tenesta SFDocuments.Document