Tulong sa LibreOffice 25.8
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:
Buksan at i-activate ang mga form.
Mag-navigate sa mga talaan na ipinapakita ng form.
Kumuha ng access sa mga kontrol sa loob ng form.
Kumuha ng access sa mga subform ng isang parent form.
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 .
Ang Mga SFDocuments . Form ang serbisyo ay malapit na nauugnay sa Mga SFDocuments . FormControl serbisyo.
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 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)
  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 .
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.
Upang tawagan ang Mga SFDocuments . Form serbisyo ay sumangguni sa mga pamamaraan Mga Form() , FormDocuments() at OpenFormDocument() ng Mga SFDocuments . Dokumento serbisyo
Bago gamitin ang Form serbisyo ang ScriptForge kailangang i-load o i-import ang library:
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")
   
     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)
   
     my_form = doc.Forms(0)
   Kung susubukan mong i-access ang a FormDocument na kasalukuyang nakabukas sa Mode ng Disenyo itataas ang isang pagbubukod.
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')
   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)
   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')
   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
   
     def OnEvent(event: uno):
         form = CreateScriptService('SFDocuments.FormEvent', event)
         pass
   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.
| 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 | Ang UNO object na kumakatawan sa mga pakikipag-ugnayan sa form. Sumangguni sa XForm at DataForm sa dokumentasyon ng API para sa detalyadong impormasyon. | 
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 | 
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 | ||
|---|---|---|
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:
Sa mga dokumento ng Writer: Itinatakda ang focus sa dokumentong iyon.
Sa mga dokumento ng Calc: Itinatakda ang focus sa sheet kung saan kabilang ang form.
Sa Base na mga dokumento: Itinatakda ang focus sa FormDocument ang Form tumutukoy sa.
svc.Activate(): bool
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()
   
     doc = CreateScriptService('Document', XSCRIPTCONTEXT.getDocument())
     form = doc.Forms('Sheet1', 'FormA')
     form.Activate()
   ThisComponent nalalapat sa mga dokumento ng Calc at Writer. Para sa paggamit ng mga Base document ThisDataBaseDocument .
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.
svc.CloseFormDocument(): bool
      myForm.CloseFormDocument() ' Basic
   
      form.CloseFormDocument()  # Python
   Ang halaga na ibinalik ng Mga kontrol Ang pamamaraan ay nakasalalay sa ibinigay na mga argumento:
Kung ang pamamaraan ay tinatawag walang argumento , pagkatapos ay ibinabalik nito ang listahan ng mga kontrol na nakapaloob sa form. Magkaroon ng kamalayan na ang ibinalik na listahan ay hindi naglalaman ng anumang mga kontrol sa subform.
Kung ang opsyonal ControlName argumento ay ibinigay, ang pamamaraan ay nagbabalik a FormControl halimbawa ng klase na tumutukoy sa tinukoy na kontrol.
svc.Controls(opt controlname: str): any
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.
      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
   
      form = doc.Forms('myForm')
      form_names = form.Controls()
      form_control = form.Controls('myTextBox')  # SFDocuments.FormControl
   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.
svc.GetDatabase(opt user: str, opt password: str): svc
user, password : Ang mga opsyonal na parameter sa pag-login (Default = "").
      Dim myDb As Object ' SFDatabases.Database
      Set myDb = oForm.GetDatabase()
   
      db = form.GetDatabase()  # SFDatabases.Database
   Ang cursor ng form ay nakaposisyon sa unang tala. Nagbabalik totoo kung matagumpay.
svc.MoveFirst(): bool
      myForm.MoveFirst() ' Basic
   
      form.MoveFirst()  # Python
   Ang cursor ng form ay nakaposisyon sa huling tala. Nagbabalik totoo kung matagumpay.
svc.MoveLast(): bool
      myForm.MoveLast() ' Basic
   
      form.MoveLast()  # Python
   Ang cursor ng form ay nakaposisyon sa bagong lugar ng record. Nagbabalik totoo kung matagumpay.
svc.MoveNew(): bool
      myForm.MoveNew() ' Basic
   
      form.MoveNew()  # Python
   Ang form na cursor ay nakaposisyon sa susunod na talaan. Nagbabalik totoo kung matagumpay.
svc.MoveNext(opt offset: int): bool
offset : Ang bilang ng mga rekord na pasulong (Default = 1).
      myForm.MoveNext() ' Basic
   
      form.MoveNext()  # Python
   Ang cursor ng form ay nakaposisyon sa nakaraang tala. Nagbabalik totoo kung matagumpay.
svc.MovePrevious(opt offset: int): bool
offset : Ang bilang ng mga tala na uurong (Default = 1).
      myForm.MovePrevious() ' Basic
   
      form.MovePrevious()  # Python
   Nire-reload ang kasalukuyang data mula sa database at nire-refresh ang form. Ang cursor ay nakaposisyon sa unang tala. Nagbabalik totoo kung matagumpay.
svc.Requery(): bool
      myForm.Requery() ' Basic
   
      form.Requery()  # Python
   Ang halaga na ibinalik ng Mga subform Ang pamamaraan ay nakasalalay sa ibinigay na mga argumento:
Kung ang pamamaraan ay tinatawag nang walang anumang argumento , pagkatapos ay ibinabalik nito ang listahan ng mga subform na nasa kasalukuyang form o subform na instance.
Kung ang opsyonal subform argumento ay ibinigay, ang pamamaraan ay nagbabalik ng bago Mga SFDocuments . Form halimbawa batay sa tinukoy na pangalan o index ng form/subform.
svc.Subforms(): str[0..*]
svc.Subforms(subform: str): svc
svc.Subforms(subform: int): svc
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.
      Dim myForm As Object, myList As Variant, mySubform As Object
      myList = myform.Subforms()
      Set mySubform = myForm.Subforms("mySubform") ' SFDocuments.Form
   
      subform_names = form.Subforms()
     subform = form.Subforms('mySubform')  # SFDocuments.Form