ເນື້ອໃນ

# ບໍລິການ SFDocuments.Form

ບໍລິການ Form ສະໜອງວິທີການ ແລະ ຄຸນສົມບັດຕ່າງໆເພື່ອຈັດການຟອມໃນເອກະສານ LibreOffice. ບໍລິການນີ້ຮອງຮັບຟອມໃນ Base, Calc ແລະ Writer ແລະ ອະນຸຍາດໃຫ້:

- ເປີດ ແລະ ເປີດໃຊ້ງານຟອມ.

- ນຳທາງຜ່ານບັນທຶກ (records) ທີ່ສະແດງໂດຍຟອມ.

- ເຂົ້າເຖິງຕົວຄວບຄຸມຕ່າງໆພາຍໃນຟອມ.

- ເຂົ້າເຖິງຟອມຍ່ອຍ (subforms) ຂອງຟອມແມ່.

ບໍລິການ SFDocuments.Form ແມ່ນມີໃຫ້ໃຊ້ຕັ້ງແຕ່ LibreOffice 7.2 ເປັນຕົ້ນໄປ.

ໂດຍປົກກະຕິແລ້ວ ຟອມຈະຖືກໃຊ້ໃນເອກະສານ LibreOffice ເພື່ອສ້າງສ່ວນຕິດຕໍ່ກັບຜູ້ໃຊ້ທີ່ເຊື່ອມຕໍ່ກັບຖານຂໍ້ມູນແບບສຳພັນ (relational databases). ດັ່ງນັ້ນ, ບໍລິການ Form ຈຶ່ງໃຫ້ການເຂົ້າເຖິງຖານຂໍ້ມູນທີ່ເຊື່ອມໂຍງຢູ່ໄດ້ຢ່າງວ່ອງໄວຜ່ານ ບໍລິການ SFDatabases.Database.

ບໍລິການ SFDocuments.Form ມີຄວາມກ່ຽວຂ້ອງຢ່າງໃກ້ຊິດກັບ ບໍລິການ SFDocuments.FormControl.

## ຄຳນິຍາມ

### FormDocument

ໂດຍປົກກະຕິແລ້ວຟອມຈະຖືກສ້າງໃນເອກະສານ Base, ແຕ່ພວກມັນກໍສາມາດເພີ່ມເຂົ້າໃນເອກະສານ Writer ແລະ Calc ໄດ້ຄືກັນ.

ໃນ Base, ແຕ່ລະຟອມທີ່ເຈົ້າສ້າງໂດຍໃຊ້ຄຸນສົມບັດ Insert - Form ຫຼື ຜ່ານ ຕົວຊ່ວຍສ້າງຟອມ (Form Wizard) ໃນຕົວຈິງແລ້ວແມ່ນ FormDocument ທີ່ສາມາດຈັດການໄດ້ດ້ວຍບໍລິການ Form. ເອກະສານ Base ສາມາດບັນຈຸເອກະສານຟອມໄດ້ບໍ່ຈຳກັດຈຳນວນ.

ຂ້າງລຸ່ມນີ້ແມ່ນຕົວຢ່າງທີ່ສະແດງໃຫ້ເຫັນລຳດັບຂັ້ນຂອງອົງປະກອບທັງໝົດທີ່ກ່ຽວຂ້ອງກັບການເຂົ້າເຖິງຟອມ ແລະ ຟອມຍ່ອຍໃນເອກະສານ Base. ສົມມຸດວ່າເຈົ້າມີໄຟລ໌ Base ຊື່ Employees.odb ແລະ ພາຍໃນນັ້ນເຈົ້າໄດ້ສ້າງເອກະສານຟອມເພື່ອເພີ່ມພະນັກງານໃໝ່ເຂົ້າໃນຖານຂໍ້ມູນ. ເອກະສານຟອມນັ້ນບັນຈຸຟອມຫຼັກຊື່ EmployeeData ທີ່ໃຫ້ການເຂົ້າເຖິງຕາຕະລາງ. ນອກນັ້ນຍັງມີຟອມຍ່ອຍ WorksAtPlant ທີ່ຊ່ວຍໃຫ້ເຈົ້າສາມາດເຊື່ອມໂຍງພະນັກງານໃໝ່ກັບໂຮງງານໃດໜຶ່ງຂອງບໍລິສັດໄດ້.

        Employees.odb (ເອກະສານ Base)
         |
         |-- AddEmployee (FormDocument)
              |
              |-- EmployeeData (ຟອມຫຼັກ)
                   |
                   |-- WorksAtPlant (SubForm)

FormDocument ສາມາດເບິ່ງໄດ້ວ່າເປັນຊຸດຂອງຟອມທີ່ໃຫ້ການເຂົ້າເຖິງຊຸດຂໍ້ມູນ ເຊັ່ນ: ຕາຕະລາງຖານຂໍ້ມູນ ແລະ ຄຳສັ່ງສອບຖາມ (queries) ຈາກພາຍໃນເອກະສານ LibreOffice. ຊື່ຂອງຟອມ ແລະ ຟອມຍ່ອຍພາຍໃນ FormDocument ສາມາດເຂົ້າເຖິງໄດ້ໂດຍໃຊ້ Form Navigator.

### ຟອມ ແລະ ຟອມຍ່ອຍ

ເອກະສານຟອມໜຶ່ງປະກອບດ້ວຍໜຶ່ງຟອມ ຫຼື ຫຼາຍກວ່າ ເຊິ່ງໃນແຕ່ລະຟອມນັ້ນກໍອາດຈະບັນຈຸຟອມຍ່ອຍໄດ້ບໍ່ຈຳກັດຈຳນວນ. ຟອມແມ່ນຊຸດຂອງຕົວຄວບຄຸມທີ່ເຊື່ອມໂຍງກັບແຫຼ່ງຂໍ້ມູນທີ່ລະບຸ, ເຊິ່ງອາດຈະແມ່ນຕາຕະລາງຖານຂໍ້ມູນ, ຄຳສັ່ງສອບຖາມ ຫຼື ຄຳສັ່ງ SQL SELECT.

ໃນເອກະສານ Calc ແລະ Writer, ແຕ່ລະຟອມສາມາດເຊື່ອມໂຍງກັບຊຸດຂໍ້ມູນທີ່ຢູ່ໃນຖານຂໍ້ມູນທີ່ແຕກຕ່າງກັນໄດ້. ໃນທາງກົງກັນຂ້າມ, ໃນເອກະສານ Base ຖານຂໍ້ມູນທີ່ບັນຈຸໃນເອກະສານນັ້ນຈະເປັນຖານຂໍ້ມູນດຽວກັນທີ່ໃຊ້ກັບທຸກຟອມ.

ເພື່ອເອີ້ນໃຊ້ບໍລິການ SFDocuments.Form ໃຫ້ເບິ່ງທີ່ວິທີການ Forms(), FormDocuments() ແລະ OpenFormDocument() ຂອງບໍລິການ SFDocuments.Document

## ການເອີ້ນໃຊ້ບໍລິການ

ກ່ອນທີ່ຈະໃຊ້ບໍລິການ Form, ຫ້ອງສະໝຸດ ScriptForge ຕ້ອງໄດ້ຮັບການໂຫຼດ ຫຼື ນຳເຂົ້າກ່ອນ:

• ມາໂຄຣ Basic ຕ້ອງມີການໂຫຼດຄັງສຳນວນ ScriptForge ໂດຍໃຊ້ຄຳສັ່ງດັ່ງນີ້:
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
• ສະຄຣິບ Python ຕ້ອງມີການນຳເຂົ້າຈາກໂມດູນ scriptforge:
from scriptforge import CreateScriptService

### ໃນເອກະສານ Writer

ສ່ວນຂອງລະຫັດລຸ່ມນີ້ສະແດງວິທີການເຂົ້າເຖິງຟອມຊື່ Form1 ທີ່ຢູ່ໃນໄຟລ໌ Writer:

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

##### ໃນ Python

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

ຟອມຕ່າງໆສາມາດເຂົ້າເຖິງໄດ້ດ້ວຍຊື່ຂອງພວກມັນ ຫຼື ດ້ວຍດັດສະນີ (indices), ດັ່ງທີ່ສະແດງລຸ່ມນີ້:

         Set myForm = oDoc.Forms(0)

##### ໃນ Python

         my_form = doc.Forms(0)

ຖ້າເຈົ້າພະຍາຍາມເຂົ້າເຖິງ FormDocument ທີ່ກຳລັງເປີດຢູ່ໃນ ໂໝດອອກແບບ (Design Mode), ຈະມີຂໍ້ຍົກເວັ້ນ (exception) ເກີດຂຶ້ນ.

### ໃນເອກະສານ Calc

ຟອມໃນໄຟລ໌ Calc ຕ້ອງມີຊື່ທີ່ບໍ່ຊ້ຳກັນພາຍໃນແຜ່ນງານ (sheet) ຂອງມັນ. ດັ່ງນັ້ນ, ວິທີການ Forms ຈຶ່ງຕ້ອງການສອງຂໍ້ໂຕ້ແຍ້ງ, ອັນທຳອິດບອກເຖິງຊື່ແຜ່ນງານ ແລະ ອັນທີສອງລະບຸຊື່ຟອມ.

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

ອັນນີ້ກໍສາມາດເຮັດໄດ້ໃນລັກສະນະດຽວກັນໂດຍໃຊ້ Python:

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

### ໃນເອກະສານ Base

FormDocument ພາຍໃນເອກະສານ Base ສາມາດເຂົ້າເຖິງໄດ້ດ້ວຍຊື່ຂອງມັນ. ຕົວຢ່າງຕໍ່ໄປນີ້ຈະເປີດເອກະສານຟອມຊື່ thisFormDocument ແລະ ເຂົ້າເຖິງຟອມ MainForm:

          Dim oDb As Object, myForm As Object
          Set oDb = CreateScriptService("SFDocuments.Document", ThisDatabaseDocument)
          ' ຄຳສັ່ງຂ້າງລຸ່ມນີ້ມີຄວາມຈຳເປັນກໍຕໍ່ເມື່ອຟອມນັ້ນຍັງບໍ່ທັນໄດ້ຖືກເປີດເທົ່ານັ້ນ
          oDb.OpenFormDocument("thisFormDocument")
          Set myForm = oDoc.Forms("thisFormDocument", "MainForm")
          ' ຫຼື ອີກທາງເລືອກໜຶ່ງ, ເພື່ອເຂົ້າເຖິງຟອມດ້ວຍດັດສະນີຂອງມັນ ...
          Set myForm = oDb.Forms("thisFormDocument", 0)

ເພື່ອດຳເນີນການໃດໆກັບຟອມໂດຍໃຊ້ບໍລິການ Form, ເອກະສານຟອມ (FormDocument) ຕ້ອງຖືກເປີດໄວ້ກ່ອນ ບໍ່ວ່າຈະໂດຍຜູ້ໃຊ້ເອງ ຫຼື ໂດຍການຂຽນຄຳສັ່ງໃນສະຄຣິບ. ການເປີດດ້ວຍສະຄຣິບສາມາດເຮັດໄດ້ໂດຍການເອີ້ນໃຊ້ວິທີການ OpenFormDocument ຂອງ ບໍລິການ Base.

ເພື່ອເຂົ້າເຖິງຟອມຍ່ອຍທີ່ກຳນົດໃຫ້ຂອງຟອມໃດໜຶ່ງ ໃຫ້ໃຊ້ວິທີການ SubForms. ຂໍໃຫ້ສັງເກດວ່າໃນຕົວຢ່າງລຸ່ມນີ້ mySubForm ແມ່ນອິນສະແຕນໃໝ່ຂອງບໍລິການ Form.

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

ຕົວຢ່າງກ່ອນໜ້ານີ້ເມື່ອຂຽນໃນ Python ຈະເປັນດັ່ງນີ້:

         db = CreateScriptService('SFDocuments.Document', XSCRIPTCONTEXT.getDocument())
         # ຄຳສັ່ງຂ້າງລຸ່ມນີ້ມີຄວາມຈຳເປັນກໍຕໍ່ເມື່ອຟອມນັ້ນຍັງບໍ່ທັນໄດ້ຖືກເປີດເທົ່ານັ້ນ
         form_doc = db.OpenFormDocument('thisFormDocument')
         form = form_doc.Forms('thisFormDocument', 'MainForm')
         # ຫຼື ອີກທາງເລືອກໜຶ່ງ, ເພື່ອເຂົ້າເຖິງຟອມດ້ວຍດັດສະນີຂອງມັນ ...
         form = form_doc.Forms('thisFormDocument', 0)
         sub_form = form.SubForms('mySubForm')

### ໃນເຫດການຂອງຟອມ (Form events)

ເພື່ອເອີ້ນໃຊ້ບໍລິການ Form ເມື່ອມີເຫດການຂອງຟອມເກີດຂຶ້ນ:

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

##### ໃນ Python

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

ບໍລິການ FormEvent ຖືກນຳໃຊ້ສະເພາະເພື່ອສ້າງອິນສະແຕນຊ໌ຂອງບໍລິການ SFDocuments.Form ແລະ SFDocuments.FormControl ເມື່ອມີເຫດການຂອງຟອມ ຫຼື ຕົວຄວບຄຸມເກີດຂຶ້ນ.

ຂໍແນະນຳໃຫ້ຄືນຊັບພະຍາກອນ (free resources) ຫຼັງຈາກໃຊ້ບໍລິການ Form ແລ້ວ.

         myForm.Dispose() ' Basic

         form.Dispose()  # Python

ການດຳເນີນການນີ້ຈະຖືກເຮັດໂດຍອັດຕະໂນມັດ ເມື່ອເອກະສານຟອມຖືກປິດດ້ວຍວິທີການ CloseFormDocument() ທີ່ອະທິບາຍໄວ້ຂ້າງລຸ່ມນີ້.

## ຄຸນສົມບັດ

ຊື່ | ອ່ານໄດ້ຢ່າງດຽວ | ປະເພດ | ຄຳອະທິບາຍ
--- | --- | --- | ---
AllowDeletes | ບໍ່ | Boolean | ລະບຸວ່າຟອມອະນຸຍາດໃຫ້ລຶບບັນທຶກ (records) ຫຼື ບໍ່.
AllowInserts | ບໍ່ | Boolean | ລະບຸວ່າຟອມອະນຸຍາດໃຫ້ເພີ່ມບັນທຶກ ຫຼື ບໍ່.
AllowUpdates | ບໍ່ | Boolean | ລະບຸວ່າຟອມອະນຸຍາດໃຫ້ອັບເດດບັນທຶກ ຫຼື ບໍ່.
BaseForm | ແມ່ນ | String | ລະບຸຊື່ຕາມລຳດັບຂັ້ນຂອງ Base Form ທີ່ບັນຈຸຟອມຕົວຈິງນັ້ນຢູ່.
Bookmark | ບໍ່ | Variant | ລະບຸເຖິງບັນທຶກປັດຈຸບັນຂອງຕາຕະລາງ, ຄຳສັ່ງສອບຖາມ ຫຼື ຄຳສັ່ງ SQL ທີ່ຟອມນັ້ນໃຊ້ຢູ່.
CurrentRecord | ບໍ່ | Long | ລະບຸບັນທຶກປັດຈຸບັນໃນຊຸດຂໍ້ມູນທີ່ກຳລັງເບິ່ງຢູ່ໃນຟອມ. ຖ້າໝາຍເລກແຖວເປັນບວກ, ເຄີເຊີ (cursor) ຈະຍ້າຍໄປຍັງໝາຍເລກແຖວທີ່ກຳນົດໂດຍເລີ່ມນັບຈາກຈຸດເລີ່ມຕົ້ນຂອງຜົນໄດ້ຮັບ. ການນັບແຖວຈະເລີ່ມທີ່ 1. ຖ້າໝາຍເລກແຖວທີ່ກຳນົດໃຫ້ເປັນລົບ, ເຄີເຊີຈະຍ້າຍໄປຍັງຕຳແໜ່ງແຖວທີ່ແນ່ນອນໂດຍເລີ່ມນັບຖອຍຫຼັງຈາກຈຸດສິ້ນສຸດຂອງຜົນໄດ້ຮັບ. ແຖວ -1 ໝາຍເຖິງແຖວສຸດທ້າຍໃນຊຸດຜົນໄດ້ຮັບ.
Filter | ບໍ່ | String | ລະບຸຊຸດຍ່ອຍຂອງບັນທຶກທີ່ຈະສະແດງໃນຮູບແບບຂອງ SQL WHERE-clause ໂດຍບໍ່ຕ້ອງມີຄຳສຳຄັນ WHERE.
LinkChildFields | ແມ່ນ | String | ລະບຸວິທີການທີ່ບັນທຶກໃນຟອມຍ່ອຍ (child subform) ເຊື່ອມໂຍງກັບບັນທຶກໃນຟອມແມ່ (parent form).
LinkParentFields | ແມ່ນ | String | ລະບຸວິທີການທີ່ບັນທຶກໃນຟອມຍ່ອຍ ເຊື່ອມໂຍງກັບບັນທຶກໃນຟອມແມ່.
Name | ແມ່ນ | String | ຊື່ຂອງຟອມປັດຈຸບັນ.
OrderBy | ບໍ່ | String | ລະບຸລຳດັບທີ່ຈະໃຫ້ສະແດງບັນທຶກຕ່າງໆ ໃນຮູບແບບຂອງ SQL ORDER BY clause ໂດຍບໍ່ຕ້ອງມີຄຳສຳຄັນ ORDER BY.
Parent | ແມ່ນ | Object | ຟອມແມ່ຂອງຟອມປັດຈຸບັນ. ມັນສາມາດເປັນໄດ້ທັງອັອບເຈັກ SFDocuments.Form ຫຼື SFDocuments.Document.
RecordSource | ບໍ່ | String | ລະບຸແຫຼ່ງທີ່ມາຂອງຂໍ້ມູນ, ເຊັ່ນ: ຊື່ຕາຕະລາງ, ຊື່ຄຳສັ່ງສອບຖາມ ຫຼື ຄຳສັ່ງ SQL.
XForm | ແມ່ນ | ອັອບເຈັກ UNO | ອັອບເຈັກ UNO ທີ່ສະແດງເຖິງການໂຕ້ຕອບກັບຟອມ. ເບິ່ງຂໍ້ມູນລະອຽດໄດ້ທີ່ XForm ແລະ DataForm ໃນເອກະສານ API.

## ຄຸນສົມບັດຂອງເຫດການ

ຄຸນສົມບັດລຸ່ມນີ້ຈະສົ່ງຄືນ ຫຼື ຕັ້ງຄ່າສາຍອັກຂະລະ URI ທີ່ກຳນົດສະຄຣິບທີ່ຈະຖືກກະຕຸ້ນໂດຍເຫດການນັ້ນ.

ຊື່ | ອ່ານໄດ້ຢ່າງດຽວ | ຄຳອະທິບາຍໃນ Basic IDE
--- | --- | ---
OnApproveCursorMove | ບໍ່ | ກ່ອນການປ່ຽນແປງບັນທຶກ
OnApproveParameter | ບໍ່ | ຕື່ມພາລາມິເຕີ
OnApproveReset | ບໍ່ | ກ່ອນການຣີເຊັດ
OnApproveRowChange | ບໍ່ | ກ່ອນການດຳເນີນການກັບຂໍ້ມູນບັນທຶກ
OnApproveSubmit | ບໍ່ | ກ່ອນການສົ່ງຂໍ້ມູນ
OnConfirmDelete | ບໍ່ | ຢືນຢັນການລຶບ
OnCursorMoved | ບໍ່ | ຫຼັງຈາກການປ່ຽນແປງຂໍ້ມູນບັນທຶກ
OnErrorOccurred | ບໍ່ | ເກີດຂໍ້ຜິດພາດຂຶ້ນ
OnLoaded | ບໍ່ | ເມື່ອພວມໂຫລດ
OnReloaded | ບໍ່ | ເມື່ອພວມໂຫລດຄືນໃໝ່
OnReloading | ບໍ່ | ກ່ອນການໂຫລດຄືນໃໝ່
OnResetted | ບໍ່ | ຫຼັງຈາກຣີເຊັດແລ້ວ
OnRowChanged | ບໍ່ | ຫຼັງຈາກການດຳເນີນການກັບຂໍ້ມູນບັນທຶກ
OnUnloaded | ບໍ່ | ເມື່ອພວມຖອນການໂຫລດ
OnUnloading | ບໍ່ | ກ່ອນການຖອນການໂຫລດ

ເພື່ອຮຽນຮູ້ເພີ່ມເຕີມກ່ຽວກັບສະຕຣິງ URI, ໃຫ້ອ້າງອີງເຖິງ ຂໍ້ກຳນົດສະເພາະ URI ຂອງ Scripting Framework.

ລາຍການເມັດທອດໃນບໍລິການຟອມ (Form service)
Activate Controls GetDatabase MoveFirst | MoveLast MoveNext MoveNew | MovePrevious Requery SubForms

## Activate

ກຳນົດໂຟກັດໃຫ້ກັບອິນສະແຕນຊ໌ Form ປັດຈຸບັນ. ສົ່ງຄ່າກັບເປັນ True ຖ້າການກຳນົດໂຟກັດສຳເລັດ.

ພຶດຕິກຳຂອງເມັດທອດ Activate ແມ່ນຂຶ້ນກັບປະເພດຂອງເອກະສານທີ່ຟອມນັ້ນຕັ້ງຢູ່:

- ໃນເອກະສານ Writer: ກຳນົດໂຟກັດໃຫ້ກັບເອກະສານນັ້ນ.

- ໃນເອກະສານ Calc: ກຳນົດໂຟກັດໃຫ້ກັບແຜ່ນງານທີ່ຟອມນັ້ນຂຶ້ນກັບ.

- ໃນເອກະສານ Base: ກຳນົດໂຟກັດໃຫ້ກັບ FormDocument ທີ່ Form ອ້າງອີງເຖິງ.

### ໄວຍາກອນ:

svc.Activate(): bool

### ຕົວຢ່າງ:

ຕົວຢ່າງຕໍ່ໄປນີ້ສົມມຸດວ່າທ່ານຕ້ອງການເປີດໃຊ້ງານ (activate) ຟອມທີ່ຊື່ວ່າ FormA ເຊິ່ງຕັ້ງຢູ່ໃນ Sheet1 ຂອງໄຟລ໌ Calc ທີ່ພວມເປີດຢູ່. ທຳອິດມັນຈະເຂົ້າເຖິງເອກະສານໂດຍໃຊ້ບໍລິການ Document ແລະ ThisComponent ຈາກນັ້ນຈຶ່ງເປີດໃຊ້ງານຟອມ.

         'ເຂົ້າເຖິງຟອມທີ່ຈະຖືກເປີດໃຊ້ງານ
         Dim oDoc as Object, myForm as Object
         Set oDoc = CreateScriptService("Document", ThisComponent)
         Set myForm = oDoc.Forms("Sheet1", "FormA")
         'ເປີດໃຊ້ງານຟອມ
         myForm.Activate()

##### ໃນ Python

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

ThisComponent ໃຊ້ໄດ້ກັບເອກະສານ Calc ແລະ Writer. ສຳລັບເອກະສານ Base ໃຫ້ໃຊ້ ThisDataBaseDocument.

## CloseFormDocument

ເມັດທອດນີ້ຖືກຍົກເລີກການໃຊ້ແລ້ວ, ໃຫ້ໃຊ້ເມັດທອດ ScriptForge.FormDocument.CloseDocument ແທນ.

ປິດເອກະສານຟອມທີ່ມີອິນສະແຕນຊ໌ Form ຕົວຈິງຢູ່. ອິນສະແຕນຊ໌ Form ຈະຖືກກຳຈັດອອກ.

### ໄວຍາກອນ:

svc.CloseFormDocument(): bool

### ຕົວຢ່າງ:

          myForm.CloseFormDocument() ' Basic

##### ໃນ Python

          form.CloseFormDocument()  # Python

## Controls

ຄ່າທີ່ສົ່ງຄືນໂດຍເມັດທອດ Controls ແມ່ນຂຶ້ນກັບອາກິວເມັນທີ່ລະບຸໄວ້:

- ຖ້າເມັດທອດຖືກເອີ້ນໃຊ້ ໂດຍບໍ່ມີອາກິວເມັນ, ມັນຈະສົ່ງຄືນລາຍການຂອງຕົວຄວບຄຸມ (controls) ທັງໝົດທີ່ມີຢູ່ໃນຟອມ. ໃຫ້ຮັບຊາບວ່າລາຍການທີ່ສົ່ງຄືນນັ້ນຈະບໍ່ລວມເອົາຕົວຄວບຄຸມຂອງຟອມຍ່ອຍ.

- ຖ້າລະບຸອາກິວເມັນທາງເລືອກ ControlName, ເມັດທອດຈະສົ່ງຄືນອິນສະແຕນຊ໌ຄລາດ FormControl ທີ່ອ້າງອີງເຖິງຕົວຄວບຄຸມທີ່ລະບຸ.

### ໄວຍາກອນ:

svc.Controls(opt controlname: str): any

### ພາຣາມິເຕີ:

controlname : ຊື່ຕົວຄວບຄຸມທີ່ຖືກຕ້ອງໃນຮູບແບບສະຕຣິງທີ່ແຍກຕົວອັກສອນນ້ອຍ-ໃຫຍ່ (case-sensitive). ຖ້າບໍ່ລະບຸ, ລາຍການຊື່ຕົວຄວບຄຸມຈະຖືກສົ່ງຄືນເປັນອາເຣທີ່ເລີ່ມຕົ້ນດ້ວຍສູນ (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

##### ໃນ Python

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

## GetDatabase

ສົ່ງຄ່າອິນສະແຕນຊ໌ SFDatabases.Database ເພື່ອເຂົ້າເຖິງການປະຕິບັດຄຳສັ່ງ SQL ໃນຖານຂໍ້ມູນທີ່ຟອມປັດຈຸບັນເຊື່ອມຕໍ່ຢູ່ ແລະ/ຫຼື ທີ່ຖືກເກັບໄວ້ໃນເອກະສານ Base ປັດຈຸບັນ.

ແຕ່ລະຟອມມີການເຊື່ອມຕໍ່ຖານຂໍ້ມູນເປັນຂອງຕົນເອງ, ຍົກເວັ້ນໃນເອກະສານ Base ທີ່ທຸກຟອມຈະໃຊ້ການເຊື່ອມຕໍ່ດຽວກັນ.

### ໄວຍາກອນ:

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

### ພາຣາມິເຕີ:

user, password: ພາລາມິເຕີທາງເລືອກສຳລັບການເຂົ້າສູ່ລະບົບ (ຄ່າເລີ່ມຕົ້ນ = "").

### ຕົວຢ່າງ:

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

##### ໃນ Python

          db = form.GetDatabase()  # SFDatabases.Database

## MoveFirst

ຕົວຊີ້ຟອມຖືກກຳນົດຕຳແໜ່ງໄວ້ທີ່ຂໍ້ມູນບັນທຶກທຳອິດ. ສົ່ງຄ່າກັບເປັນ True ຖ້າສຳເລັດ.

### ໄວຍາກອນ:

svc.MoveFirst(): bool

### ຕົວຢ່າງ:

          myForm.MoveFirst() ' Basic

##### ໃນ Python

          form.MoveFirst()  # Python

## MoveLast

ຕົວຊີ້ຟອມຖືກກຳນົດຕຳແໜ່ງໄວ້ທີ່ຂໍ້ມູນບັນທຶກສຸດທ້າຍ. ສົ່ງຄ່າກັບເປັນ True ຖ້າສຳເລັດ.

### ໄວຍາກອນ:

svc.MoveLast(): bool

### ຕົວຢ່າງ:

          myForm.MoveLast() ' Basic

##### ໃນ Python

          form.MoveLast()  # Python

## MoveNew

ຕົວຊີ້ຟອມຖືກກຳນົດຕຳແໜ່ງໄວ້ທີ່ພື້ນທີ່ຂໍ້ມູນບັນທຶກໃໝ່. ສົ່ງຄ່າກັບເປັນ True ຖ້າສຳເລັດ.

### ໄວຍາກອນ:

svc.MoveNew(): bool

### ຕົວຢ່າງ:

          myForm.MoveNew() ' Basic

##### ໃນ Python

          form.MoveNew()  # Python

## MoveNext

ຕົວຊີ້ຟອມຖືກກຳນົດຕຳແໜ່ງໄວ້ທີ່ຂໍ້ມູນບັນທຶກຖັດໄປ. ສົ່ງຄ່າກັບເປັນ True ຖ້າສຳເລັດ.

### ໄວຍາກອນ:

svc.MoveNext(opt offset: int): bool

### ພາຣາມິເຕີ:

offset: ຈຳນວນຂໍ້ມູນບັນທຶກທີ່ຈະໄປທາງໜ້າ (ຄ່າເລີ່ມຕົ້ນ = 1).

### ຕົວຢ່າງ:

          myForm.MoveNext() ' Basic

##### ໃນ Python

          form.MoveNext()  # Python

## MovePrevious

ຕົວຊີ້ຟອມຖືກກຳນົດຕຳແໜ່ງໄວ້ທີ່ຂໍ້ມູນບັນທຶກກ່ອນໜ້າ. ສົ່ງຄ່າກັບເປັນ True ຖ້າສຳເລັດ.

### ໄວຍາກອນ:

svc.MovePrevious(opt offset: int): bool

### ພາຣາມິເຕີ:

offset: ຈຳນວນຂໍ້ມູນບັນທຶກທີ່ຈະຖອຍຫຼັງ (ຄ່າເລີ່ມຕົ້ນ = 1).

### ຕົວຢ່າງ:

          myForm.MovePrevious() ' Basic

          form.MovePrevious()  # Python

## Requery

ໂຫລດຂໍ້ມູນປັດຈຸບັນຄືນໃໝ່ຈາກຖານຂໍ້ມູນ ແລະ ຣີເຟຣຊຟອມ. ຕົວຊີ້ຈະຖືກກຳນົດຕຳແໜ່ງໄວ້ທີ່ຂໍ້ມູນບັນທຶກທຳອິດ. ສົ່ງຄ່າກັບເປັນ True ຖ້າສຳເລັດ.

### ໄວຍາກອນ:

svc.Requery(): bool

### ຕົວຢ່າງ:

          myForm.Requery() ' Basic

##### ໃນ Python

          form.Requery()  # Python

## Subforms

ຄ່າທີ່ສົ່ງຄືນໂດຍເມັດທອດ Subforms ແມ່ນຂຶ້ນກັບອາກິວເມັນທີ່ລະບຸໄວ້:

- ຖ້າເມັດທອດຖືກເອີ້ນໃຊ້ ໂດຍບໍ່ມີອາກິວເມັນໃດໆ, ມັນຈະສົ່ງຄືນລາຍການຂອງຟອມຍ່ອຍ (subforms) ທີ່ມີຢູ່ໃນອິນສະແຕນຊ໌ຟອມ ຫຼື ຟອມຍ່ອຍປັດຈຸບັນ.

- ຖ້າລະບຸອາກິວເມັນທາງເລືອກ subform, ເມັດທອດຈະສົ່ງຄືນອິນສະແຕນຊ໌ SFDocuments.Form ໃໝ່ ໂດຍອີງຕາມຊື່ ຫຼື ອິນເດັກຂອງຟອມ/ຟອມຍ່ອຍທີ່ລະບຸ.

### ໄວຍາກອນ:

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

svc.Subforms(subform: str): svc

svc.Subforms(subform: int): svc

### ພາຣາມິເຕີ:

subform: ຟອມຍ່ອຍທີ່ເກັບໄວ້ໃນອິນສະແຕນຊ໌ຄລາດ Form ປັດຈຸບັນ ເຊິ່ງລະບຸໂດຍຊື່ ຫຼື ອິນເດັກຂອງມັນ.

ເມື່ອບໍ່ມີອາກິວເມັນນີ້, ເມັດທອດຈະສົ່ງຄືນລາຍການຟອມຍ່ອຍທີ່ມີຢູ່ເປັນອາເຣທີ່ເລີ່ມຕົ້ນດ້ວຍສູນ. ຖ້າຟອມມີຟອມຍ່ອຍພຽງອັນດຽວ, ທ່ານສາມາດກຳນົດ subform = 0 ເພື່ອເຂົ້າເຖິງມັນໄດ້.

### ຕົວຢ່າງ:

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

##### ໃນ Python

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

ຣູທີນ ຫຼື ຕົວລະບຸ Basic ຂອງ ScriptForge ທັງໝົດທີ່ຂຶ້ນຕົ້ນດ້ວຍເຄື່ອງໝາຍຂີດກ້ອງ "_" ແມ່ນສະຫງວນໄວ້ສຳລັບໃຊ້ພາຍໃນ. ພວກມັນບໍ່ໄດ້ມີໄວ້ໃຫ້ໃຊ້ໃນມາໂຄຣ Basic ຫຼື ສະຄຣິບ Python.

ຫົວຂໍ້ທີ່ກ່ຽວຂ້ອງ

ບໍລິການ SFDatabases.Database

ບໍລິການ SFDocuments.Document

ບໍລິການ ScriptForge.UI

ກະລຸນາສະໜັບສະໜູນພວກເຮົາ!