ການຊ່ວຍເຫຼືອ LibreOffice 26.2
ຕໍ່ໄປນີ້ແມ່ນການອະທິບາຍກ່ຽວກັບການນຳໃຊ້ ໂປຣຊີເຈີ, ຟັງຊັນ ແລະ ຄຸນສົມບັດ ພື້ນຖານໃນ LibreOffice Basic.
ເມື່ອທ່ານສ້າງໂໂມດູນໃໝ່, LibreOffice Basic ຈະໃສ່ Sub ທີ່ຊື່ວ່າ "Main" ໃຫ້ໂດຍອັດຕະໂນມັດ. ຊື່ມາດຕະຖານນີ້ບໍ່ກ່ຽວຂ້ອງກັບລຳດັບ ຫຼື ຈຸດເລີ່ມຕົ້ນຂອງໂປຣເຈັກ LibreOffice Basic. ທ່ານສາມາດປ່ຽນຊື່ Sub ນີ້ໄດ້ຢ່າງປອດໄພ.
ມີຂໍ້ຈຳກັດບາງຢ່າງໃນການຕັ້ງຊື່ຕົວແປສາທາລະນະ, ຊັບຣູທີນ, ຟັງຊັນ ແລະ ຄຸນສົມບັດ. ທ່ານຕ້ອງບໍ່ໃຊ້ຊື່ດຽວກັນກັບໂມດູນໃດໜຶ່ງໃນຄັງ (library) ດຽວກັນ.
ໂປຣຊີເຈີ (Sub), ຟັງຊັນ (Function) ແລະ ຄຸນສົມບັດ (Property) ຊ່ວຍໃຫ້ທ່ານຈັດການໂຄງສ້າງໄດ້ງ່າຍຂຶ້ນໂດຍການແບ່ງໂປຣແກຣມອອກເປັນສ່ວນໆຕາມຕັກກະ (logic). ສ່ວນເຫຼົ່ານີ້ສາມາດນຳມາໃຊ້ຄືນໄດ້ງ່າຍໃນການເຮັດວຽກທີ່ຄ້າຍຄືກັນໃນໂປຣເຈັກອື່ນ.
ຕົວແປສາມາດຖືກສົ່ງໄປຫາ ໂປຣຊີເຈີ, ຟັງຊັນ ຫຼື ຄຸນສົມບັດ ໄດ້. ໂດຍທີ່ Sub, Function ຫຼື Property ນັ້ນຕ້ອງຖືກປະກາດໃຫ້ມີການຮັບພາຣາມິເຕີ:
Sub SubName(Parameter1 As TYPENAME, Parameter2 As TYPENAME,...)
' ລະຫັດຂອງທ່ານຢູ່ບ່ອນນີ້
End Sub
Sub ຈະຖືກເອີ້ນໃຊ້ໂດຍໃຊ້ໄວຍາກອນດັ່ງນີ້:
[Call] SubName( [Parameter1:=]Value1, [Parameter2:=]Value2, ...)
ພາຣາມິເຕີທີ່ສົ່ງໄປຫາ Sub ຕ້ອງກົງກັບທີ່ລະບຸໄວ້ໃນຕອນປະກາດ Sub.
ຂະບວນການດຽວກັນນີ້ກໍໃຊ້ກັບ Function. ນອກຈາກນັ້ນ, ຟັງຊັນຈະສົ່ງຄ່າຜົນລັດສະເໝີ. ຜົນລັດນີ້ຖືກກຳນົດໂດຍການມອບຄ່າທີ່ຕ້ອງການສົ່ງກັບໃຫ້ກັບຊື່ຟັງຊັນ:
Function FunctionName(Parameter1 As TYPENAME, Parameter2 As TYPENAME,...) As TYPENAME
' ລະຫັດຂອງທ່ານຢູ່ບ່ອນນີ້
FunctionName=Result
End Function
Function ຈະຖືກເອີ້ນໃຊ້ໂດຍໃຊ້ໄວຍາກອນດັ່ງນີ້:
Variable = FunctionName( [Parameter1:=]Value1, [Parameter2:=]Value2, ...)
ຄຸນສົມບັດ (Properties) ເປັນການລວມເອົາໄວຍາກອນຂອງໂປຣຊີເຈີ ແລະ ຟັງຊັນເຂົ້າກັນ. ໂດຍປົກກະຕິ Property ຈະຕ້ອງການພາຣາມິເຕີສູງສຸດໜຶ່ງຕົວ.
Private _IsApproved As TYPENAME
Property Get IsApproved As TYPENAME
' ລະຫັດຂອງທ່ານຢູ່ບ່ອນນີ້
IsApproved = some_computation
End Property
Property Let IsApproved(value As TYPENAME)
' ລະຫັດຂອງທ່ານຢູ່ບ່ອນນີ້
_IsApproved = computed_value
End Property
Property ຈະຖືກເອີ້ນໃຊ້ໂດຍໃຊ້ໄວຍາກອນດັ່ງນີ້:
var = IsApproved
IsApproved = some_value
ທ່ານຍັງສາມາດໃຊ້ຊື່ແບບເຕັມເພື່ອເອີ້ນໃຊ້ ໂປຣຊີເຈີ, ຟັງຊັນ ຫຼື ຄຸນສົມບັດ ໄດ້:
[Call] Library.Module.Macro(), ໂດຍທີ່ Call ແມ່ນຈະໃສ່ ຫຼື ບໍ່ກໍໄດ້.
ຕົວຢ່າງ: ການເອີ້ນໃຊ້ Autotext ມາໂຄຣ ຈາກຄັງ Gimmicks, ໃຫ້ໃຊ້ຄຳສັ່ງນີ້:
Gimmicks.AutoText.Main()
ພາຣາມິເຕີສາມາດສົ່ງໄປຫາໂປຣຊີເຈີ, ຟັງຊັນ ຫຼື ຄຸນສົມບັດ ໄດ້ທັງແບບອ້າງອີງ ຫຼື ແບບຄ່າ. ຖ້າບໍ່ໄດ້ລະບຸໄວ້ເປັນຢ່າງອື່ນ, ພາຣາມິເຕີຈະຖືກສົ່ງແບບອ້າງອີງສະເໝີ. ນັ້ນໝາຍຄວາມວ່າ Sub, Function ຫຼື Property ຈະໄດ້ຮັບພາຣາມິເຕີນັ້ນ ແລະ ສາມາດອ່ານ ຫຼື ແກ້ໄຂຄ່າຂອງມັນໄດ້.
ຖ້າທ່ານຕ້ອງການສົ່ງພາຣາມິເຕີແບບຄ່າ (by value), ໃຫ້ໃສ່ຄຳສຳຄັນ ByVal ໄວ້ທາງໜ້າພາຣາມິເຕີໃນຕອນທີ່ເອີ້ນໃຊ້ Sub, Function ຫຼື Property, ຕົວຢ່າງ:
Function ReadOnlyParms(ByVal p2, ByVal p2)
' ລະຫັດຂອງທ່ານຢູ່ບ່ອນນີ້
End Function
result = ReadOnlyParms(parm1, parm2)
ໃນກໍລະນີນີ້ນີ້, ເນື້ອໃນຕົ້ນສະບັບຂອງພາຣາມິເຕີຈະບໍ່ຖືກແກ້ໄຂໂດຍ Function ເພາະມັນໄດ້ຮັບພຽງແຕ່ຄ່າ ບໍ່ແມ່ນຕົວພາຣາມິເຕີເອງ.
ຟັງຊັນ, ໂປຣຊີເຈີ ຫຼື ຄຸນສົມບັດ ສາມາດຖືກກຳນົດໃຫ້ມີພາຣາມິເຕີແບບເລືອກໄດ້, ຕົວຢ່າງ:
Sub Rounding(number, Optional decimals, Optional format)
' ລະຫັດຂອງທ່ານຢູ່ບ່ອນນີ້
End Sub
ເມື່ອທ່ານເອີ້ນໃຊ້ຟັງຊັນ ຫຼື ຊັບຣູທີນ, ທ່ານສາມາດສົ່ງອາກິວເມັນຕາມຕຳແໜ່ງ ຫຼື ຕາມຊື່ກໍໄດ້. ການສົ່ງຕາມຕຳແໜ່ງໝາຍເຖິງການລຽງອາກິວເມັນຕາມລຳດັບທີ່ກຳນົດໄວ້ໃນຟັງຊັນ. ສ່ວນການສົ່ງຕາມຊື່ ແມ່ນທ່ານຕ້ອງໃສ່ຊື່ພາຣາມິເຕີທີ່ກ່ຽວຂ້ອງນຳໜ້າ ແລ້ວຕາມດ້ວຍເຄື່ອງໝາຍຈ້ຳ ແລະ ເທົ່າກັບ (:=). ອາກິວເມັນແບບຄຳສຳຄັນສາມາດລຽງລຳດັບແນວໃດກໍໄດ້. ເບິ່ງຕົວຢ່າງໄດ້ຈາກຟັງຊັນ Replace() ຂອງ Basic.
ເມື່ອຕ້ອງການສົ່ງພາຣາມິເຕີພຽງບາງຕົວ, ໃຫ້ໃຊ້ອາກິວເມັນແບບຄຳສຳຄັນ. ການສົ່ງຄ່າຕາມຕຳແໜ່ງໃນກໍລະນີທີ່ມີພາຣາມິເຕີໜ້ອຍກວ່າທັງໝົດ ຈະບັງຄັບໃຫ້ທ່ານຕ້ອງລະບຸຄ່າໃຫ້ຄົບທຸກຕົວທີ່ມາກ່ອນໜ້ານັ້ນ. ແຕ່ຖ້າທ່ານສົ່ງພາຣາມິເຕີຕາມຊື່, ທ່ານສາມາດຂ້າມພາຣາມິເຕີຕົວອື່ນໆທີ່ຢູ່ລະຫວ່າງກາງໄດ້ເລີຍ.
ຕົວແປທີ່ກຳນົດພາຍໃນ Sub, Function ຫຼື Property ຈະມີຜົນຈົນກວ່າຈະອອກຈາກໂປຣຊີເຈີນັ້ນ. ນີ້ເອີ້ນວ່າຕົວແປ "Local" (ທ້ອງຖິ່ນ). ໃນຫຼາຍກໍລະນີ, ທ່ານອາດຕ້ອງການໃຫ້ຕົວແປນັ້ນສາມາດໃຊ້ໄດ້ໃນທຸກໂປຣຊີເຈີ, ທຸກໂມດູນ, ທຸກຄັງ ຫຼື ຍັງຄົງຢູ່ເຖິງແມ່ນວ່າຈະອອກຈາກ Sub, Function ຫຼື Property ນັ້ນໄປແລ້ວ.
Global VarName As TYPENAME
ຕົວແປຈະຍັງມີຜົນຢູ່ຕະຫຼອດໄລຍະການເປີດໃຊ້ງານ LibreOffice.
Public VarName As TYPENAME
ຕົວແປຈະມີຜົນໃນທຸກໂມດູນ.
Private VarName As TYPENAME
ຕົວແປຈະມີຜົນສະເພາະໃນໂມດູນນີ້ເທົ່ານັ້ນ.
Dim VarName As TYPENAME
ຕົວແປຈະມີຜົນສະເພາະໃນໂມດູນນີ້ເທົ່ານັ້ນ.
ບັງຄັບໃຫ້ຕົວແປ Private ເປັນແບບສ່ວນຕົວຢ່າງແທ້ຈິງຂ້າມໂມດູນ ໂດຍການຕັ້ງຄ່າ CompatibilityMode(True).
' ***** Module1 *****
Private myText As String
Sub initMyText
myText = "ສະບາຍດີ"
Print "ໃນ ໂມດູນ1 : ", myText
End Sub
' ***** Module2 *****
'Option Explicit
Sub demoBug
CompatibilityMode( True )
initMyText
' ຕອນນີ້ສົ່ງຂໍ້ຄວາມຫວ່າງກັບມາ
' (ຫຼື ແຈ້ງຂໍ້ຜິດພາດຖ້າໃຊ້ Option Explicit)
Print "ຕອນນີ້ຢູ່ໃນ ໂມດູນ2 : ", myText
End Sub
Static VarName As TYPENAME
ຕົວແປຈະຍັງເກັບຄ່າເດີມໄວ້ຈົນກວ່າຈະມີການກັບເຂົ້າສູ່ Function, Sub ຫຼື Property ນັ້ນອີກຄັ້ງ. ການປະກາດນີ້ຕ້ອງຢູ່ພາຍໃນ Sub, Function ຫຼື Property.
ເຊັ່ນດຽວກັບຕົວແປ, ໃຫ້ໃສ່ຕົວອັກສອນລະບຸປະເພດຫຼັງຊື່ຟັງຊັນ, ຫຼື ລະບຸດ້ວຍ As ຕາມດ້ວຍປະເພດຂໍ້ມູນທີ່ທ້າຍລາຍການພາຣາມິເຕີ ເພື່ອກຳນົດປະເພດຄ່າທີ່ສົ່ງກັບຂອງຟັງຊັນ ຫຼື ຄຸນສົມບັດ, ຕົວຢ່າງ:
Function WordCount(WordText As String) As Integer