Mga SFDocuments . Form serbisyo

Ang Form nagbibigay ang serbisyo ng mga pamamaraan at katangian upang pamahalaan ang mga form sa mga dokumento ng LibreOffice. Sinusuportahan ng serbisyong ito ang mga form sa mga dokumento ng Base, Calc at Writer at nagbibigay-daan sa:

tip

Ang Mga SFDocuments . Form available ang serbisyo mula sa LibreOffice 7.2 pataas.


Karaniwang ginagamit ang mga form sa mga dokumento ng LibreOffice upang lumikha ng mga user interface na konektado sa mga relational na database. Samakatuwid, ang Form nagbibigay ng mabilis na access sa naka-link na database sa pamamagitan ng Mga SFDatabase . Database serbisyo .

tip

Ang Mga SFDocuments . Form ang serbisyo ay malapit na nauugnay sa Mga SFDocuments . FormControl serbisyo.


Mga Kahulugan

FormDocument

Karaniwang ginagawa ang mga form sa mga Base na dokumento, ngunit maaari rin silang idagdag sa mga dokumento ng Writer at Calc.

Sa Base, bawat form na iyong nilikha gamit ang Insert - Form functionality o sa pamamagitan ng Form Wizard ay talagang a FormDocument na maaaring hawakan sa Form serbisyo. Ang mga baseng dokumento ay maaaring maglaman ng walang limitasyong bilang ng mga form na dokumento.

Nasa ibaba ang isang halimbawa na nagpapakita ng hierarchy ng lahat ng elementong kasangkot sa pag-access ng mga form at subform sa isang Base na dokumento. Ipagpalagay na mayroon kang isang Base file na pinangalanan Mga empleyado.odb at sa loob nito ay lumikha ka ng isang form na dokumento upang magdagdag ng mga bagong empleyado sa database. Ang dokumento ng form ay naglalaman ng isang pangunahing form na pinangalanan EmployeeData na nagbibigay ng access sa isang table. Mayroon ding subform WorksAtPlant na nagpapahintulot sa iyo na iugnay ang bagong empleyado sa isa sa mga planta ng kumpanya.


    Employees.odb (Base na dokumento)
     |
     |-- AddEmployee (FormDocument)
          |
          |-- EmployeeData (Pangunahing Form)
               |
               |-- WorksAtPlant (SubForm)
  
note

A FormDocument ay makikita bilang isang hanay ng mga form na nagbibigay ng access sa mga dataset gaya ng mga talahanayan ng database at mga query mula sa loob ng mga dokumento ng LibreOffice. Ang mga pangalan ng mga form at subform sa loob ng isang FormDocument ay maaaring ma-access gamit ang Form Navigator .


Mga Form at Subform

Ang isang form na dokumento ay binubuo ng isa o higit pang mga form na, sa turn, ay maaari ding maglaman ng anumang bilang ng mga subform. Ang Form ay isang abstract na hanay ng mga kontrol na naka-link sa isang tinukoy na pinagmumulan ng data, na maaaring isang talahanayan ng database, isang query o isang SQL PUMILI pahayag.

Sa mga dokumento ng Calc at Writer, maaaring i-link ang bawat form sa mga dataset na matatagpuan sa iba't ibang database. Sa kabilang banda, sa mga Base na dokumento ang database na nakapaloob sa dokumento ay karaniwan sa lahat ng anyo.

tip

Upang tawagan ang Mga SFDocuments . Form serbisyo ay sumangguni sa mga pamamaraan Mga Form() , FormDocuments() at OpenFormDocument() ng Mga SFDocuments . Dokumento serbisyo


Panawagan sa serbisyo

Bago gamitin ang Form serbisyo ang ScriptForge kailangang i-load o i-import ang library:

note

• Ang mga pangunahing macro ay kailangang mag-load ScriptForge aklatan gamit ang sumusunod na pahayag:
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")

• Ang mga script ng Python ay nangangailangan ng pag-import mula sa scriptforge module:
mula sa scriptforge import CreateScriptService


Sa mga dokumento ng Writer

Ang code snippet sa ibaba ay nagpapakita kung paano i-access ang form na pinangalanan Form1 na nasa loob ng isang Writer file:


      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")
   
Sa Python

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

Maaaring ma-access ang mga form sa pamamagitan ng kanilang mga pangalan o sa pamamagitan ng kanilang mga indeks, tulad ng ipinapakita sa ibaba:


     Set myForm = oDoc.Forms(0)
   
Sa Python

     my_form = doc.Forms(0)
   
warning

Kung susubukan mong i-access ang a FormDocument na kasalukuyang nakabukas sa Mode ng Disenyo itataas ang isang pagbubukod.


Sa mga dokumento ng Calc

Ang isang form sa isang Calc file ay dapat may natatanging pangalan sa loob ng sheet nito. Samakatuwid, ang Mga porma Ang pamamaraan ay nangangailangan ng dalawang argumento, ang una ay nagpapahiwatig ng pangalan ng sheet at ang pangalawa ay tumutukoy sa pangalan ng form.


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

Ito ay nakamit nang magkapareho gamit ang Python:


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

Sa Base na mga dokumento

A FormDocument sa loob ng isang Base na dokumento ay ina-access ng pangalan nito. Binubuksan ng sumusunod na halimbawa ang dokumento ng form na pinangalanan thisFormDocument at ina-access ang form MainForm :


      Dim oDb As Object, myForm As Object
      Set oDb = CreateScriptService("SFDocuments.Document", ThisDatabaseDocument)
      ' Ang pahayag sa ibaba ay kailangan lamang kung ang form ay hindi pa nabubuksan
      oDb.OpenFormDocument("thisFormDocument")
      Set myForm = oDoc.Forms("thisFormDocument", "MainForm")
      ' O, bilang kahalili, upang ma-access ang form sa pamamagitan ng index nito ...
      Set myForm = oDb.Forms("thisFormDocument", 0)
   
note

Upang magsagawa ng anumang aksyon sa isang form gamit ang Form serbisyo, ang FormDocument dapat ay nabuksan nang manu-mano ng user o sa programmatically sa isang user script. Ang huli ay maaaring gawin sa pamamagitan ng pagtawag sa OpenFormDocument paraan ng Base serbisyo .


Upang ma-access ang isang ibinigay na subform ng isang form gamitin ang Mga SubForms paraan. Tandaan na sa halimbawa sa ibaba mySubForm ay isang bagong halimbawa ng Form serbisyo.


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

Ang mga nakaraang halimbawa ay isinalin sa Python bilang:


     db = CreateScriptService('SFDocuments.Document', XSCRIPTCONTEXT.getDocument())
     # Ang pahayag sa ibaba ay kailangan lamang kung ang form ay hindi pa nabubuksan
     form_doc = db.OpenFormDocument('thisFormDocument')
     form = form_doc.Forms('thisFormDocument', 'MainForm')
     # O, bilang kahalili, upang ma-access ang form sa pamamagitan ng index nito ...
     form = form_doc.Forms('thisFormDocument', 0)
     sub_form = form.SubForms('mySubForm')
   

Mga kaganapan sa Form

Upang tawagan ang Form serbisyo kapag naganap ang isang kaganapan sa form:


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

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

Ang FormEvent ang serbisyo ay eksklusibong ginagamit upang lumikha ng mga pagkakataon ng SFDocuments.Form at SFDocuments.FormControl mga serbisyo kapag naganap ang isang form o kontrol na kaganapan.


Inirerekomenda na magbakante ng mga mapagkukunan pagkatapos gamitin ang serbisyo ng Form.


     myForm.Dispose() ' Basic
   

     form.Dispose()  # Python
   

Ang operasyong ito ay ganap na ginagawa kapag ang isang dokumento ng form ay isinara gamit ang CloseFormDocument() pamamaraan na inilarawan sa ibaba.

Mga Katangian

Pangalan

Readonly

Type

Mga nilalaman

AllowDeletes

Hindi

Boolean

Tinutukoy kung pinapayagan ng form na magtanggal ng mga tala.

AllowInserts

Hindi

Boolean

Tinutukoy kung pinapayagan ng form na magdagdag ng mga tala.

AllowUpdates

Hindi

Boolean

Tinutukoy kung pinapayagan ng form na i-update ang mga tala.

BaseForm

Mayroon

String

Tinutukoy ang hierarchical na pangalan ng Base Form na naglalaman ng aktwal na form.

Bookmark

Hindi

Variant

Katangi-tanging tumutukoy sa kasalukuyang talaan ng pinagbabatayan na talahanayan, query o SQL statement ng form.

CurrentRecord

Hindi

Long

Tinutukoy ang kasalukuyang tala sa dataset na tinitingnan sa isang form. Kung positibo ang row number, lilipat ang cursor sa ibinigay na row number na may kinalaman sa simula ng set ng resulta. Magsisimula ang bilang ng row sa 1. Kung negatibo ang ibinigay na numero ng row, lilipat ang cursor sa isang ganap na posisyon ng row na may kinalaman sa dulo ng set ng resulta. Ang row -1 ay tumutukoy sa huling row sa set ng resulta.

Filter

Hindi

String

Tinutukoy ang isang subset ng mga tala na ipapakita bilang a SQL SAAN -sugnay na wala ang SAAN keyword.

LinkChildFields

Mayroon

String

Tinutukoy kung paano naka-link ang mga talaan sa isang subform ng bata sa mga talaan sa parent form nito.

LinkParentFields

Mayroon

String

Tinutukoy kung paano naka-link ang mga talaan sa isang subform ng bata sa mga talaan sa parent form nito.

Name

Mayroon

String

Ang pangalan ng kasalukuyang form.

OrderBy

Hindi

String

Tinutukoy kung aling pagkakasunud-sunod ang mga talaan ay dapat ipakita bilang a SQL ORDER NI sugnay na wala ang ORDER NI mga keyword.

Parent

Mayroon

Object

Ang magulang ng kasalukuyang form. Maaari itong alinman sa a Mga SFDocuments . Form o a Mga SFDocuments . Dokumento bagay.

RecordSource

Hindi

String

Tinutukoy ang pinagmulan ng data, bilang pangalan ng talahanayan, pangalan ng query o SQL statement.

XForm

Mayroon

UNO
bagay

Ang UNO object na kumakatawan sa mga pakikipag-ugnayan sa form. Sumangguni sa XForm at DataForm sa dokumentasyon ng API para sa detalyadong impormasyon.


Mga katangian ng kaganapan

Ang mga property sa ibaba ay nagbabalik o nagtatakda ng mga string ng URI na tumutukoy sa script na na-trigger ng kaganapan.

Pangalan

ReadOnly

Pangunahing Paglalarawan ng IDE

OnApproveCursorMove

Hindi

Bago baguhin ang record

OnApproveParameter

Hindi

Punan ang mga parameter

OnApproveReset

Hindi

Bago i-reset

OnApproveRowChange

Hindi

Bago magtala ng aksyon

OnApproveSubmit

Hindi

Bago isumite

OnConfirmDelete

Hindi

Kumpirmahin ang pagtanggal

OnCursorMoved

Hindi

Pagkatapos ng pagbabago ng rekord

OnErrorOccurred

Hindi

Nagkaroon ng error

OnLoaded

Hindi

Kapag naglo-load

OnReloaded

Hindi

Kapag nagreload

OnReloading

Hindi

Bago mag-reload

OnResetted

Hindi

Pagkatapos i-reset

OnRowChanged

Hindi

Pagkatapos ng record action

OnUnloaded

Hindi

Kapag nagbabawas

OnUnloading

Hindi

Bago magdiskarga


tip

Upang matuto nang higit pa tungkol sa mga string ng URI, sumangguni sa Pagtutukoy ng URI Framework ng Scripting .


Listahan ng mga pamamaraan sa serbisyo ng Form

Activate
Controls
GetDatabase
MoveFirst

MoveLast
MoveNext
MoveNew

MovePrevious
Requery
SubForms


Activate

Itinatakda ang focus sa kasalukuyang Form halimbawa. Nagbabalik totoo kung matagumpay ang pagtutok.

Ang pag-uugali ng mga I-activate Ang pamamaraan ay depende sa uri ng dokumento kung saan matatagpuan ang form:

Syntax:

svc.Activate(): bool

Halimbawa:

Ipinapalagay ng sumusunod na halimbawa na gusto mong i-activate ang form na pinangalanan FormA matatagpuan sa Sheet1 ng kasalukuyang bukas na Calc file. Una itong nakakakuha ng access sa dokumento gamit ang Dokumento serbisyo at ThisComponent at pagkatapos ay i-activate ang form.


     'Nakakakuha ng form na isaaktibo
     Dim oDoc as Object, myForm as Object
     Set oDoc = CreateScriptService("Document", ThisComponent)
     

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

'Ina-activate ang form myForm.Activate()
Sa Python

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

ThisComponent nalalapat sa mga dokumento ng Calc at Writer. Para sa paggamit ng mga Base document ThisDataBaseDocument .


CloseFormDocument

warning

Ang pamamaraang ito ay hindi na ginagamit, gamitin ScriptForge.FormDocument.CloseDocument paraan sa halip.


Isinasara ang dokumento ng form na naglalaman ng aktwal Form halimbawa. Ang Form itinapon ang halimbawa.

Syntax:

svc.CloseFormDocument(): bool

Halimbawa:


      myForm.CloseFormDocument() ' Basic
   
Sa Python

      form.CloseFormDocument()  # Python
   

Controls

Ang halaga na ibinalik ng Mga kontrol Ang pamamaraan ay nakasalalay sa ibinigay na mga argumento:

Syntax:

svc.Controls(opt controlname: str): any

Mga Parameter:

controlname : Isang wastong pangalan ng kontrol bilang isang case-sensitive na string. Kung wala, ang listahan ng mga control name ay ibabalik bilang zero-based array.

Halimbawa:


      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
   
Sa Python

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

GetDatabase

Pagbabalik a Mga SFDatabase . Database halimbawang nagbibigay ng access sa pagpapatupad ng mga SQL command sa database kung saan nakakonekta ang kasalukuyang form at/o naka-imbak sa kasalukuyang Base document.

Ang bawat form ay may sariling koneksyon sa database, maliban sa mga dokumento ng Base kung saan lahat sila ay nagbabahagi ng parehong koneksyon.

Syntax:

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

Mga Parameter:

user, password : Ang mga opsyonal na parameter sa pag-login (Default = "").

Halimbawa:


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

      db = form.GetDatabase()  # SFDatabases.Database
   

MoveFirst

Ang cursor ng form ay nakaposisyon sa unang tala. Nagbabalik totoo kung matagumpay.

Syntax:

svc.MoveFirst(): bool

Halimbawa:


      myForm.MoveFirst() ' Basic
   
Sa Python

      form.MoveFirst()  # Python
   

MoveLast

Ang cursor ng form ay nakaposisyon sa huling tala. Nagbabalik totoo kung matagumpay.

Syntax:

svc.MoveLast(): bool

Halimbawa:


      myForm.MoveLast() ' Basic
   
Sa Python

      form.MoveLast()  # Python
   

MoveNew

Ang cursor ng form ay nakaposisyon sa bagong lugar ng record. Nagbabalik totoo kung matagumpay.

Syntax:

svc.MoveNew(): bool

Halimbawa:


      myForm.MoveNew() ' Basic
   
Sa Python

      form.MoveNew()  # Python
   

MoveNext

Ang form na cursor ay nakaposisyon sa susunod na talaan. Nagbabalik totoo kung matagumpay.

Syntax:

svc.MoveNext(opt offset: int): bool

Mga Parameter:

offset : Ang bilang ng mga rekord na pasulong (Default = 1).

Halimbawa:


      myForm.MoveNext() ' Basic
   
Sa Python

      form.MoveNext()  # Python
   

MovePrevious

Ang cursor ng form ay nakaposisyon sa nakaraang tala. Nagbabalik totoo kung matagumpay.

Syntax:

svc.MovePrevious(opt offset: int): bool

Mga Parameter:

offset : Ang bilang ng mga tala na uurong (Default = 1).

Halimbawa:


      myForm.MovePrevious() ' Basic
   

      form.MovePrevious()  # Python
   

Requery

Nire-reload ang kasalukuyang data mula sa database at nire-refresh ang form. Ang cursor ay nakaposisyon sa unang tala. Nagbabalik totoo kung matagumpay.

Syntax:

svc.Requery(): bool

Halimbawa:


      myForm.Requery() ' Basic
   
Sa Python

      form.Requery()  # Python
   

Subforms

Ang halaga na ibinalik ng Mga subform Ang pamamaraan ay nakasalalay sa ibinigay na mga argumento:

Syntax:

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

svc.Subforms(subform: str): svc

svc.Subforms(subform: int): svc

Mga Parameter:

subform : Isang subform na nakaimbak sa kasalukuyang Form class instance na ibinigay ng pangalan o index nito.

Kapag wala ang argumentong ito, ibabalik ng pamamaraan ang isang listahan ng mga available na subform bilang isang zero-based na array. Kung ang form ay may iisang subform, maaari mong itakda subform = 0 para makakuha ng access dito.

Halimbawa:


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

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

Lahat ScriptForge Ang mga pangunahing gawain o identifier na may prefix na may underscore na character na "_" ay nakalaan para sa panloob na paggamit. Ang mga ito ay hindi nilalayong gamitin sa Basic macros o Python script.


Mangyaring suportahan kami!