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 tillet brukarane å:

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

warning

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.

tip

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:

note

• 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 eksisterande 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())
tip

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.

note

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:

Eigenskapar

Namn

Skriveverna

Type

Gjeld for

Beskriving

Action

Nei

String

Button

Spesifiserer handlinga som vert utløyst når det vert trykt på knappen. Godkjente 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, 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 eit verktøytips 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


tip

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 vi ønskjer å visa teksten for den valde 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 "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
   
warning

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


Støtt oss!