Innhold

# SFDocuments.FormControl tjeneste

Tjenesten FormControl gir tilgang til kontrollene som tilhører et skjema, et underskjema eller en tabellkontroll i et FormDocument. Hver forekomst av FormControl-tjenesten refererer til en enkelt kontroll i skjemaet. Denne tjenesten lar brukere:

- Hent og angi egenskapene til kontrollen representert av 1FormControl2-forekomsten.

- Få tilgang til gjeldende verdi som vises av kontrollen.

- Sett fokus på ønsket kontroll.

For å bruke FormControl-tjenesten i et bestemt skjema, underskjema eller tabellkontroll, må alle kontroller ha unike navn.

Alternativknapper som deler samme gruppenavn må også ha unike kontrollnavn.

Hovedformålet med FormControl-tjenesten er å angi og få egenskapene og verdiene vist av kontrollene i et skjema.

Alle kontroller har en Verdi-egenskap. Imidlertid vil innholdet variere i henhold til kontrolltypen. For mer informasjon, les Verdie Egenskap nedenfor.

Det er også mulig å formatere kontrollene via egenskapene XControlModel og XControlView.

Tjenesten SFDocuments.FormControl er nært knyttet til SFDocuments.Form tjeneste.

## Tjenestepåkallelse

Før du bruker FormControl-tjenesten, må ScriptForge-biblioteket lastes eller importeres:

• Grunnleggende makroer krever å laste ScriptForge-biblioteket ved hjelp av følgende setning:
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
• Python-skript krever import fra scriptforge-modulen:
fra scriptforge import CreateScriptService

FormControl-tjenesten påkalles fra en eksisterende Skjema-tjenesteforekomst gjennom dens Kontroll-metode.

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

For å lære mer om hvordan du åpner et FormDocument og får tilgang til dets skjemaer, se Hjelpesiden for SFDocuments.Form.

Alternativt kan en FormControl-forekomst hentes via SFDocuments.FormEvent-tjenesten, som returnerer klasseforekomsten SFDocuments.FormControl som utløste hendelsen.

          Sub OnEvent(ByRef poEvent As Object)
              Dim oControl As Object
              Set oControl = CreateScriptService("SFDocuments.FormEvent", poEvent)
              ' oControl representerer nå forekomsten av FormControl-klassen som utløste gjeldende hendelse
              ' ...
          End Sub

##### I Python

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

Merk at i tidligere eksempler kan prefikset "SFDocuments." utelates.

Tjenesten FormEvent brukes utelukkende til å lage forekomster av tjenestene SFDocuments.Form og SFDocuments.FormControl når en skjema- eller kontrollhendelse finner sted.

## Kontrolltyper

Tjenesten FormControl er tilgjengelig for følgende kontrolltyper:

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

## Egenskaper

Navn | Skrivebeskyttet | Type | Gjelder for | Beskrivelse
--- | --- | --- | --- | ---
Action | Nei | String | Button | Angir handlingen som utløses når knappen klikkes. Godkjente verdier er: ingen, submitForm, resetForm, refreshForm, moveToFirst, moveToLast, moveToNext, moveToPrev, saveRecord, moveToNew, deleteRecord, undoRecord.
Caption | Nei | String | Button, CheckBox, FixedText, GroupBox, RadioButton | Spesifiserer teksten som vises av kontrollen.
ControlSource | Ja | String | CheckBox, ComboBox, CurrencyField, DateField, FormattedField, ImageControl, ListBox, NumericField, PatternField, RadioButton, TextField, TimeField | Spesifiserer radsettfeltet som er tilordnet den gjeldende kontrollen.
ControlType | Ja | String | Alle | En av kontrolltypene som er oppført ovenfor.
Default | Nei | Boolean | Button | Angir om en kommandoknapp er standard OK-knapp.
DefaultValue | Nei | Variant | CheckBox, ComboBox, CurrencyField, DateField, FileControl, FormattedField, ListBox, NumericField, PatternField, RadioButton, SpinButton, TextField, TimeField | Angir standardverdien som brukes til å initialisere en kontroll i en ny post.
Enabled | Nei | Boolean | Alle (bortsett fra SkjulteKontroller) | Angir om kontrollen er tilgjengelig med markøren.
Format | Nei | String | DateField, TimeField, FormattedField (read-only) | Angir formatet som brukes til å vise datoer og klokkeslett. Det må være en av følgende strenger: For datoer: "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 tider: "24t kort", "24t lang", "12t kort", "12t lang".
ListCount | Ja | Long | ComboBox, ListBox | Returnerer antall rader i en ListBox eller en ComboBox.
ListIndex | Nei | Long | ComboBox, ListBox | Angir hvilket element som er valgt i en ListBox eller ComboBox. Ved flere valg returneres indeksen til det første elementet eller bare et element settes.
ListSource | Nei | Variant | ComboBox, ListBox | Spesifiserer dataene i en ComboBox eller en ListBox som en nullbasert matrise med strengverdier. Kombinert med ListSourceType, kan også inneholde navnet på en tabell, en spørring eller en fullstendig SQL-setning.
ListSourceType | Nei | Integer | ComboBox, ListBox | Angir typen data som finnes i en kombinasjonsboks eller en listeboks. Det må være en av com.sun.star.form.ListSourceType. * konstanter.
Locked | Nei | Boolean | ComboBox, CurrencyField, DateField, FileControl, FormattedField, ImageControl, ListBox, NumericField, PatternField, TextField, TimeField | Angir om kontrollen er skrivebeskyttet.
MultiSelect | Nei | Boolean | ListBox | Angir om brukeren kan velge flere elementer i en listeboks.
Name | Ja | String | Alle | Navnet på kontrollen.
Parent | Ja | Object | Alle | Avhengig av overordnet type, returnerer et skjema, et underskjema eller en tabellkontroll det overordnede SFDocuments.Skjema eller SFDocuments.FormControl klasseobjektforekomst.
Picture | Nei | String | Button, ImageButton, ImageControl | Angir filnavnet som inneholder en punktgrafikk eller annen type grafikk som skal vises på kontrollen. Filnavnet må samsvare med FileName-attributtet til ScriptForge.FileSystem-tjenesten.
Required | Nei | Boolean | CheckBox, ComboBox, CurrencyField, DateField, ListBox, NumericField, PatternField, RadioButton, SpinButton, TextField, TimeField | En kontroll sies å være nødvendig når de underliggende dataene ikke må inneholde en null verdi.
Text | Ja | String | ComboBox, DateField, FileControl, FormattedField, PatternField, TextField, TimeField | Gir tilgang til teksten som vises av kontrollen.
TipText | Nei | String | Alle (unntatt HiddenControl) | Angir teksten som vises som et verktøytips når du holder musepekeren over kontrollen.
TripleState | Nei | Boolean | CheckBox | Spesifiserer om avmerkingsboksen kan vises nedtonet (utgrået) eller ikke.
Value | Nei | Variant |  | Denne egenskapen avhenger av gjeldende kontrolltype. Se egenskapen Value for mer informasjon.
Visible | Nei | Boolean | Alle (unntatt HiddenControl) | Angir om kontrollen er skjult eller synlig.
XControlModel | Ja | UNO objekt | Alle | UNO-objektet som representerer kontrollmodellen. Se XControlModel og UnoControlModel i API-dokumentasjonen for mer informasjon.
XControlView | Ja | UNO objekt | Alle | UNO-objektet som representerer kontrollvisningen. Se XControl og UnoControl i API-dokumentasjonen for mer informasjon.

## Egenskapen Verdi

Kontrolltype | Type | Beskrivelse
--- | --- | ---
Button | Boolean | Gjelder kun for veksleknapper.
CheckBox | boolsk eller heltall | 0, Usann: ikke avkrysset 1, Sann: avkrysset 2: nedtonet, vet ikke (gjelder hvis TripleState er Sann)
ComboBox | String | Den valgte verdien, som en streng. Egenskapen ListIndex er et alternativt alternativ for å få tilgang til indeksen til den valgte verdien.
CurrencyField | Numerisk |
DateField | Date |
FileControl | String | Et filnavn formatert i samsvar med egenskapen FileName til ScriptForge.FileSystem-tjenesten
FormattedField | Streng eller Numerisk |
HiddenControl | String |
ListBox | Strenger eller en matrise med strenger | Den(e) valgte raden(e) som en enkelt streng eller en matrise med strenger. Bare én enkelt verdi kan angis. Hvis boksen er koblet til en database, henter eller setter denne egenskapen de underliggende dataene. Ellers henter eller setter den dataene som vises.
NumericField | Numerisk |
PatternField | String |
RadioButton | Boolean | Hver knapp har sitt eget navn. Flere RadioButton-kontroller er koblet sammen når de deler samme gruppenavn. Hvis en RadioButton er satt til Sann, settes de andre relaterte knappene automatisk til Sann
ScrollBar | Numerisk | Må være innenfor de forhåndsdefinerte grensene
SpinButton | Numerisk | Må være innenfor de forhåndsdefinerte grensene
TextField | String | Teksten som vises i feltet
TimeField | Date |

## Hendelsesegenskaper

Egenskapene nedenfor returnerer eller setter URI-strenger som definerer skriptet som utløses av hendelsen.

Navn | Skrivebeskyttelse | Beskrivelse som merket i Basic IDE
--- | --- | ---
OnActionPerformed | Nei | Utfør handling
OnAdjustmentValueChanged | Nei | Mens du justerer
OnApproveAction | Nei | Godkjenn handling
OnApproveReset | Nei | Før tilbakestilling
OnApproveUpdate | Nei | Før oppdatering
OnChanged | Nei | Endret
OnErrorOccurred | Nei | En feil oppstod
OnFocusGained | Nei | Når du mottar fokus
OnFocusLost | Nei | Når man mister fokus
OnItemStateChanged | Nei | Elementstatus endret
OnKeyPressed | Nei | Tast trykket
OnKeyReleased | Nei | Nøkkelen slippes
OnMouseDragged | Nei | Musen beveget seg mens tasten trykkes
OnMouseEntered | Nei | Mus innenfor
OnMouseExited | Nei | Mus utenfor
OnMouseMoved | Nei | Mus flyttet
OnMousePressed | Nei | Museknapp trykket
OnMouseReleased | Nei | Museknappen slippes
OnResetted | Nei | Etter tilbakestilling
OnTextChanged | Nei | Tekst endret
OnUpdated | Nei | Etter oppdatering

For å lære mer om URI-strenger, se URI-spesifikasjonen for skriptrammeverk.

Liste over metoder i FormControl-tjenesten
Controls | SetFocus

## Controls

Denne metoden gjelder bare kontroller av typen TableControl. Den returnerte verdien avhenger av argumentene som er oppgitt.

Hvis det valgfrie argumentet kontrollnavn er fraværende, returneres en nullbasert matrise som inneholder navnene på alle kontrollene.

På den annen side, hvis et kontrollnavn er oppgitt, returnerer metoden en klasseforekomst FormControl som tilsvarer den spesifiserte kontrollen.

### Syntaks:

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

svc.Controls(controlname: str): svc

### Parametre:

kontrollnavn: Et gyldig kontrollnavn som en streng som skiller mellom store og små bokstaver. Hvis fraværende, returneres listen over kontrollnavn som en nullbasert matrise.

### Eksempel:

          Dim myGrid As Object, myList As Variant, myControl As Object
          Set myGrid = myForm.Controls("myTableControl") ' SFDocuments.FormControl
          ' Returnerer en matrise med navnene på alle kontrollene i "myTableControl"
          myList = myGrid.Controls()
          ' Returnerer en FormControl-klasseforekomst som tilsvarer "myCheckBox"
          Set myControl = myGrid.Controls("myCheckBox")

Bruker Python:

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

## SetFocus

Setter fokus på kontrollen. Returnerer Sann hvis fokuseringen var vellykket.

Denne metoden kalles ofte fra et skjema eller en kontrollhendelse.

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

## Ytterligere eksempler

Nedenfor er to eksempler som illustrerer bruken av FormControl-tjenesten.

Det første eksemplet leser gjeldende verdi i en ComboBox som inneholder bynavn og skriver den til en FixedTest-kontroll i et 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 lignende metoder
         doc = CreateScriptService('SFDocuments.Document', bas.ThisDatabaseDocument)
         form = doc.Forms('formDocumentName', 'formName')
         lbl_city = form.Controls('labelCity')
         combo_city = form.Controls('comboboxCity')
         lbl_city.Caption = "Valgt by: " + combo_city.Value

Følgende kodebit kan brukes til å behandle RadioButton-kontroller som deler samme gruppenavn. I dette eksemplet, anta at det er tre radioknapper med navn optA, optB og optC og vi ønsker å vise bildeteksten til den valgte kontrollen.

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

##### I Python

         bas = CreateScriptService('ScriptForge.Basic') # Basic lignende metoder
         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('Valgt alternativ: ' + control.Caption)
               break

Alle ScriptForge Grunnleggende rutiner eller identifikatorer som er prefikset med et understrekingstegn "_" er reservert for intern bruk. De er ikke ment å brukes i grunnleggende makroer eller Python-skript.

Lignende emner

ScriptForge.Grunnleggende tjeneste

SFDocuments.Form tjeneste

SFDocuments.Dokument tjeneste