SFDocuments.Form tjeneste

Tjenesten Form gir metoder og egenskaper for Ă„ administrere skjemaer i LibreOfficeDev-dokumenter. Denne tjenesten stĂžtter skjemaer i Base-, Calc- og Writer-dokumenter og lar deg:

tip

Tjenesten SFDocuments.Skjema er tilgjengelig fra LibreOfficeDev 7.2 og utover.


Skjemaer brukes vanligvis i LibreOfficeDev-dokumenter for Ă„ lage brukergrensesnitt koblet til relasjonsdatabaser. Derfor gir Skjema-tjenesten rask tilgang til den koblede databasen gjennom SFDatabases .Database-tjeneste.

tip

Tjenesten SFDocuments.Skjema er nĂŠrt knyttet til SFDocuments.FormControl-tjeneste.


Definisjoner

FormDocument

Skjemaer lages vanligvis i Base- dokumenter, men de kan ogsÄ legges til Writer- og Calc-dokumenter.

I Base, hvert skjema du oppretter ved Ä bruke Sett inn - Skjema-funksjonaliteten eller gjennom Skjemaveiviseren er faktisk et FormDocument som kan hÄndteres med Form-tjenesten. Base-dokumenter kan inneholde et ubegrenset antall skjemadokumenter.

Nedenfor er et eksempel som viser hierarkiet til alle elementene som er involvert i tilgang til skjemaer og underskjemaer i et basisdokument. Anta at du har en Base-fil kalt Employees.odb og inne i den har du opprettet et skjemadokument for Ä legge til nye ansatte i databasen. Skjemadokumentet inneholder et hovedskjema kalt EmployeeData som gir tilgang til en tabell. Det er ogsÄ et underskjema WorksAtPlant som lar deg knytte den nye medarbeideren til en av anleggene i selskapet.


    Employees.odb (Base dokument)
     |
     |-- AddEmployee (FormDocument)
          |
          |-- EmployeeData (Hovedskjema)
               |
               |-- WorksAtPlant (SubForm)
  
note

Et FormDocument kan sees pÄ som et sett med skjemaer som gir tilgang til datasett som databasetabeller og spÞrringer fra LibreOfficeDev-dokumenter. Navnene pÄ skjemaer og underskjemaer i et FormDocument kan nÄs ved Ä bruke Skjema Navigator.


Skjemaer og underskjemaer

Et skjemadokument er satt sammen av ett eller flere skjemaer som pÄ sin side ogsÄ kan inneholde et hvilket som helst antall underskjemaer. Et skjema er et abstrakt sett med kontroller som er koblet til en spesifisert datakilde, som kan vÊre en databasetabell, en spÞrring eller en SQL SELECT-setning.

I Calc- og Writer-dokumenter kan hvert skjema kobles til datasett som ligger i forskjellige databaser. PĂ„ den annen side, i Base-dokumenter er databasen i dokumentet felles for alle skjemaer.

tip

For Ä pÄkalle SFDocuments.Form-tjenesten, referer til metodene Forms(), FormDocuments() og OpenFormDocument() av SFDocuments.Dokument tjeneste


TjenestepÄkallelse

FÞr du bruker Skjema-tjenesten, mÄ ScriptForge-biblioteket lastes eller importeres:

note

‱ 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


I Writer-dokumenter

Kodebiten nedenfor viser hvordan du fÄr tilgang til skjemaet Form1 som er inne i en Writer-fil:


      Dim oDoc As Object, myForm As Object, ui as Object
      Set ui = CreateScriptService("UI")
      Set oDoc = ui.OpenDocument("/home/user/Documents/MyForm.odt")
      Set myForm = oDoc.Forms("Form1")
   
I Python

     from scriptforge import CreateScriptService
     ui = CreateScriptService('UI') 
     doc = ui.OpenDocument('/home/user/Documents/MyForm.odt')
     my_form = doc.Forms('Form1')
   

Skjemaer kan nÄs med navn eller indekser, som vist nedenfor:


     Set myForm = oDoc.Forms(0)
   
I Python

     my_form = doc.Forms(0)
   
warning

Hvis du prÞver Ä fÄ tilgang til et FormDocument som for Þyeblikket er Äpnet i Design Mode, vil et unntak bli skapt.


I Calc-dokumenter

Et skjema i en Calc-fil mÄ ha et unikt navn i arket. Derfor krever Skjema-metoden to argumenter, det fÞrste angir arknavnet og det andre angir skjemanavnet.


      Dim oDoc As Object, myForm As Object, ui as Object
      Set ui = CreateScriptService("UI")
      Set oDoc = ui.OpenDocument("/home/user/Documents/MyForms.ods")
      Set myForm = oDoc.Forms("Sheet1", "Form1")
   

Dette oppnÄs identisk med Python:


     ui = CreateScriptService('UI')
     doc = ui.OpenDocument('/home/user/Documents/MyForms.ods')
     my_form = doc.Forms('Sheet1', 'Form1')
   

I Base dokumenter

Et FormDocument inne i et Base-dokument Äpnes med navnet. FÞlgende eksempel Äpner skjemadokumentet kalt thisFormDocument og fÄr tilgang til skjemaet MainForm:


      Dim oDb As Object, myForm As Object
      Set oDb = CreateScriptService("SFDocuments.Document", ThisDatabaseDocument)
      ' Uttalelsen nedenfor er bare nÞdvendig hvis skjemaet ikke er Äpnet ennÄ
      oDb.OpenFormDocument("thisFormDocument")
      Set myForm = oDoc.Forms("thisFormDocument", "MainForm")
      ' Eller, alternativt, for Ä fÄ tilgang til skjemaet ved hjelp av indeksen ...
      Set myForm = oDb.Forms("thisFormDocument", 0)
   
note

For Ä utfÞre noen handling pÄ et skjema ved Ä bruke Skjema-tjenesten, mÄ FormDocument ha blitt Äpnet enten manuelt av brukeren eller programmatisk i et brukerskript. Sistnevnte kan gjÞres ved Ä kalle OpenFormDocument-metoden til Base tjeneste.


For Ä fÄ tilgang til et gitt underskjema av et skjema, bruk SubForms-metoden. Merk at i eksemplet nedenfor er mySubForm en ny forekomst av Skjema-tjenesten.


     Dim mySubForm As Object
     Set mySubForm = myForm.SubForms("mySubForm")
   

Tidligere eksempler oversettes i Python som:


     db = CreateScriptService('SFDocuments.Document', XSCRIPTCONTEXT.getDocument())
     # Uttalelsen nedenfor er bare nÞdvendig hvis skjemaet ikke er Äpnet ennÄ
     form_doc = db.OpenFormDocument('thisFormDocument')
     form = form_doc.Forms('thisFormDocument', 'MainForm')
     # Eller, alternativt, for Ä fÄ tilgang til skjemaet ved hjelp av indeksen ...
     form = form_doc.Forms('thisFormDocument', 0)
     sub_form = form.SubForms('mySubForm')
   

I Skjema-hendelser

Slik aktiverer du Skjema-tjenesten nÄr en skjemahendelse finner sted:


      Sub OnEvent(ByRef poEvent As Object)
          Dim myForm As Object
          Set myForm = CreateScriptService("SFDocuments.FormEvent", poEvent)
          '(...)
      End sub
   
I Python

     def OnEvent(event: uno):
         form = CreateScriptService('SFDocuments.FormEvent', event)
         pass
   
note

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


Det anbefales Ă„ frigjĂžre ressurser etter bruk av skjematjenesten.


     myForm.Dispose() ' Basic
   

     form.Dispose()  # Python
   

Denne operasjonen gjÞres implisitt nÄr et skjemadokument lukkes med metoden CloseFormDocument() beskrevet nedenfor.

Egenskaper

Navn

Skrivebeskyttet

Type

Beskrivelse

AllowDeletes

Nei

Boolean

Angir om skjemaet tillater Ă„ slette poster.

AllowInserts

Nei

Boolean

Angir om skjemaet tillater Ă„ legge til poster.

AllowUpdates

Nei

Boolean

Angir om skjemaet tillater Ă„ oppdatere poster.

BaseForm

Ja

String

Angir det hierarkiske navnet pÄ basisskjemaet som inneholder det faktiske skjemaet.

Bookmark

Nei

Variant

Spesifiserer unikt gjeldende post for skjemaets underliggende tabell, spĂžrring eller SQL-uttrykk.

CurrentRecord

Nei

Long

Identifiserer gjeldende posten i datasettet som vises i et skjema. Hvis radnummeret er positivt, flytter markÞren til det gitte radnummeret til begynnelsen av resultatsettet. Antall rader starter pÄ 1. Hvis det gitte radnummeret er negativt, flyttes markÞren til en absolutt radposisjon i forhold til slutten av resultatsettet. Rad -1 refererer til den siste raden i resultatsettet.

Filter

Nei

String

Spesifiserer et undersett av poster som skal vises som en SQL WHERE-ledd uten WHERE nĂžkkelordet.

LinkChildFields

Ja

String

Angir hvordan poster i et underskjema er koblet til poster i det overordnede skjemaet.

LinkParentFields

Ja

String

Angir hvordan poster i et underskjema er koblet til poster i det overordnede skjemaet.

Name

Ja

String

Navnet pÄ gjeldende skjema.

OrderBy

Nei

String

Spesifiserer i hvilken rekkefĂžlge postene skal vises som en SQL ORDER BY-klausul uten ORDER BY-nĂžkkelordene.

Parent

Ja

Object

Forelderen til gjeldende skjema. Det kan enten vĂŠre et SFDocuments.Form eller et SFDocuments.Document-objekt.

RecordSource

Nei

String

Angir kilden til dataene, som et tabellnavn, et spĂžrringsnavn eller en SQL-setning.

XForm

Ja

UNO
objekt

UNO-objektet som representerer interaksjoner med skjemaet. Refererer til XForm og DataForm i API-dokumentasjonen for detaljert informasjon.


Hendelsesegenskaper

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

Navn

Skrivebeskyttet

Basic IDE Beskrivelse

OnApproveCursorMove

Nei

FĂžr postendring

OnApproveParameter

Nei

Fyllparametere

OnApproveReset

Nei

FĂžr tilbakestilling

OnApproveRowChange

Nei

FĂžr post handling

OnApproveSubmit

Nei

FĂžr innsending

OnConfirmDelete

Nei

Bekreft sletting

OnCursorMoved

Nei

Etter posteendring

OnErrorOccurred

Nei

En feil oppsto

OnLoaded

Nei

Ved lasting

OnReloaded

Nei

Ved omlasting

OnReloading

Nei

FĂžr omlasting

OnResetted

Nei

Etter tilbakestilling

OnRowChanged

Nei

Etter posthandling

OnUnloaded

Nei

Under avlasting

OnUnloading

Nei

FĂžr avlasting


tip

For Ă„ lĂŠre mer om URI-strenger, se Scripting Framework URI-spesifikasjonen.


Liste over metoder for skjematjenesten

Activate
CloseFormDocument
Controls
GetDatabase

MoveFirst
MoveLast
MoveNext
MoveNew

MovePrevious
Requery
SubForms


Activate

Setter fokus pÄ gjeldende Skjema-forekomst. Returnerer Sann hvis fokuseringen var vellykket.

OppfĂžrselen til Aktiver-metoden avhenger av dokumenttypen der skjemaet er plassert:

Syntaks:

svc.Activate(): bool

Eksempel:

FÞlgende eksempel forutsetter at du Þnsker Ä aktivere skjemaet FormA som ligger i Sheet1 i den Äpne Calc-filen. Den fÄr fÞrst tilgang til dokumentet ved Ä bruke Dokument-tjenesten og ThisComponent og deretter aktivere skjemaet.


     'FÄr tak i skjemaet som skal aktiveres
     Dim oDoc as Object, myForm as Object
     Set oDoc = CreateScriptService("Document", ThisComponent)
     

Set myForm = oDoc.Forms("Sheet1", "FormA")

'Aktiverer skjemaet myForm.Activate()
I Python

     doc = CreateScriptService('Document', XSCRIPTCONTEXT.getDocument())
     form = doc.Forms('Sheet1', 'FormA')
     form.Activate()
   
note

Denne komponenten gjelder for Calc- og Writer-dokumenter. For basisdokumenter bruk ThisDataBaseDocument.


CloseFormDocument

Lukker skjemadokumentet som inneholder den faktiske Skjema-forekomsten. Skjema-forekomsten er fjernet.

Syntaks:

svc.CloseFormDocument(): bool

Eksempel:


      myForm.CloseFormDocument() ' Basic
   
I Python

      form.CloseFormDocument()  # Python
   
note

Denne metoden lukker bare skjemadokumenter som ligger i basisdokumenter. Hvis skjemaet er lagret i et Writer- eller Calc-dokument, vil det ikke ha noen effekt Ă„ kalle CloseFormDocument.


Controls

Verdien som returneres av metoden Controls avhenger av argumentene som er oppgitt:

Syntaks:

svc.Controls(opt controlname: str): any

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 myForm As Object, myList As Variant, myControl As Object
      Set myForm = myDoc.Forms("myForm")
      myList = myform.Controls()
      Set myControl = myform.Controls("myTextBox") ' SFDocuments.FormControl
   
I Python

      form = doc.Forms('myForm')
      form_names = form.Controls()
      form_control = form.Controls('myTextBox')  # SFDocuments.FormControl
   

GetDatabase

Returner en SFDatabases.Database-forekomst som gir tilgang til utfÞrelse av SQL-kommandoer pÄ databasen det gjeldende skjemaet er koblet til og/eller som er lagret i gjeldende Base-dokument.

Hvert skjema har sin egen databasetilkobling, bortsett fra i Base-dokumenter hvor alle deler samme tilkobling.

Syntaks:

svc.GetDatabase(opt user: str, opt password: str): svc

Parametre:

bruker, passord: De valgfrie pÄloggingsparametrene (Standard = "").

Eksempel:


      Dim myDb As Object ' SFDatabases.Database
      Set myDb = oForm.GetDatabase()
   
I Python

      db = form.GetDatabase()  # SFDatabases.Database
   

MoveFirst

SkjemamarkÞren er plassert pÄ den fÞrste posten. Returnerer Sann hvis vellykket.

Syntaks:

svc.MoveFirst(): bool

Eksempel:


      myForm.MoveFirst() ' Basic
   
I Python

      form.MoveFirst()  # Python
   

MoveLast

SkjemamarkÞren er plassert pÄ den siste posten. Returnerer Sann hvis vellykket.

Syntaks:

svc.MoveLast(): bool

Eksempel:


      myForm.MoveLast() ' Basic
   
I Python

      form.MoveLast()  # Python
   

MoveNew

SkjemamarkÞren er plassert pÄ det nye postomrÄdet. Returnerer Sann hvis vellykket.

Syntaks:

svc.MoveNew(): bool

Eksempel:


      myForm.MoveNew() ' Basic
   
I Python

      form.MoveNew()  # Python
   

MoveNext

SkjemamarkÞren er plassert pÄ neste post. Returnerer Sann hvis vellykket.

Syntaks:

svc.MoveNext(opt offset: int): bool

Parametre:

offset: Antall poster som skal gÄ fremover (standard = 1).

Eksempel:


      myForm.MoveNext() ' Basic
   
I Python

      form.MoveNext()  # Python
   

MovePrevious

SkjemamarkÞren er plassert pÄ forrige post. Returnerer Sann hvis vellykket.

Syntaks:

svc.MovePrevious(opt offset: int): bool

Parametre:

offset: Antall poster Ä gÄ bakover (standard = 1).

Eksempel:


      myForm.MovePrevious() ' Basic
   

      form.MovePrevious()  # Python
   

Requery

Laster inn gjeldende data fra databasen pÄ nytt og oppdaterer skjemaet. MarkÞren er plassert pÄ den fÞrste posten. Returnerer Sann hvis vellykket.

Syntaks:

svc.Requery(): bool

Eksempel:


      myForm.Requery() ' Basic
   
I Python

      form.Requery()  # Python
   

Subforms

Verdien som returneres av metoden Subforms avhenger av argumentene som er oppgitt:

Syntaks:

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

svc.Subforms(subform: str): svc

svc.Subforms(subform: int): svc

Parametre:

underskjema: Et underskjema lagret i den gjeldende klasseforekomsten Skjema gitt av navnet eller indeksen.

NÄr dette argumentet er fravÊrende, returnerer metoden en liste over tilgjengelige underskjemaer som en nullbasert matrise. Hvis skjemaet har et enkelt underskjema, kan du sette underskjema = 0 for Ä fÄ tilgang til det.

Eksempel:


      Dim myForm As Object, myList As Variant, mySubform As Object
      myList = myform.Subforms()
      Set mySubform = myForm.Subforms("mySubform") ' SFDocuments.Form
   
I Python

      subform_names = form.Subforms()
     subform = form.Subforms('mySubform')  # SFDocuments.Form
   
warning

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.