ຄຳສັ່ງ Property

Property (ຄຸນສົມບັດ), ເຊິ່ງບາງຄັ້ງເອີ້ນວ່າ field ຫຼື attribute, ໃຊ້ເພື່ອລະບຸລັກສະນະຂອງອັອບເຈັກ ຫຼື ຂໍ້ມູນ. Property ສາມາດໃຊ້ເພື່ອຄວບຄຸມການເຂົ້າເຖິງຂໍ້ມູນ. ເປັນເລື່ອງປົກກະຕິທີ່ຈະລວມເອົາຄຳສັ່ງຕ່າງໆໃນເວລາທີ່ຕັ້ງຄ່າ ຫຼື ອ່ານ Property. ລະຫັດສາມາດມີຕັ້ງແຕ່ການກຳນົດຄ່າງ່າຍໆ ໄປຈົນເຖິງຣູທີນທີ່ຊັບຊ້ອນຕາມສະພາບການ. ການໃຊ້ Get, Let ຫຼື Set ຊ່ວຍຮັກສາຄວາມສອດຄ່ອງຂອງ Property ເມື່ອຈຳເປັນ.

ໄອຄອນ ຄຳເຕືອນ

ຄຳສັ່ງນີ້ຈຳເປັນຕ້ອງມີ Option Compatible ວາງໄວ້ກ່ອນລະຫັດໂປຣແກຣມໃນໂມດູນ.


ໄວຍາກອນ:

ແຜນວາດຄຳສັ່ງ Property Get


         [Private | Public] Property Get name[char | As typename]
         End Property
      

ແຜນວາດຄຳສັ່ງ Property Set


         [Private | Public] Property [Let | Set] name[char] [([Optional [ByRef | ByVal]]value[char | As typename])] [As typename]
         End Property
      

ພາຣາມິເຕີ:

name: ຊື່ຂອງ Property.

argument: ຄ່າທີ່ຈະສົ່ງໄປຍັງຣູທີນກຳນົດຄ່າ (setter) ຂອງ Property.

ໄອຄອນ ບັນທຶກ

ຣູທີນກຳນົດຄ່າ (setters) ຂອງ Property ມັກຈະໃຊ້ອາກິວເມັນດຽວ. ການໃຊ້ຫຼາຍອາກິວເມັນກໍສາມາດເຮັດໄດ້ເຊັ່ນກັນ.


ສ່ວນຍ່ອຍອາກິວເມັນ

ສ່ວນຍ່ອຍອາກິວເມັນ


      {[Optional [ByRef|ByVal]]|ParamArray} argument {{As typename|char}[ = expression]|[()]As Variant}
    
ພາລາມິເຕີ

Optional: ອາກິວເມັນນີ້ບໍ່ແມ່ນສິ່ງບັງຄັບ.

ByRef: ອາກິວເມັນຖືກສົ່ງຜ່ານແບບອ້າງອີງ. ByRef ແມ່ນຄ່າເລີ່ມຕົ້ນ.

ByVal: ອາກິວເມັນຖືກສົ່ງຜ່ານດ້ວຍຄ່າ (by value). ຄ່າຂອງມັນສາມາດຖືກແກ້ໄຂໂດຍຣູທີນທີ່ຖືກຮຽກໃຊ້.

char: ອັກສອນປະກາດປະເພດ.

typename: ຊື່ປະເພດຂໍ້ມູນພື້ນຖານ. ສາມາດລະບຸປະເພດທີ່ກຳນົດໂດຍໄລບຣາຣີ ຫຼື ໂມດູນໄດ້ເຊັ່ນກັນ.

= expression: ລະບຸຄ່າເລີ່ມຕົ້ນສຳລັບອາກິວເມັນ ໃຫ້ກົງກັບປະເພດທີ່ປະກາດໄວ້. ຈຳເປັນຕ້ອງມີ Optional ສຳລັບແຕ່ລະອາກິວເມັນທີ່ລະບຸຄ່າເລີ່ມຕົ້ນ.

ParamArray: ໃຊ້ ParamArray ເມື່ອບໍ່ຮູ້ຈຳນວນພາລາມິເຕີທີ່ແນ່ນອນ. ກໍລະນີປົກກະຕິຄືການໃຊ້ໃນຟັງຊັນທີ່ຜູ້ໃຊ້ກຳນົດເອງໃນ Calc. ການໃຊ້ ParamArray ຄວນຈຳກັດໄວ້ພຽງແຕ່ອາກິວເມັນສຸດທ້າຍຂອງຣູທີນເທົ່ານັ້ນ.

ໄອຄອນ ເຄັດລັບ

ການໃຊ້ ParamArray ຫຼື = expression ຈຳເປັນຕ້ອງວາງ Option Compatible ໄວ້ກ່ອນລະຫັດໂປຣແກຣມໃນໂມດູນ.


ໄອຄອນ ຄຳເຕືອນ

ເມື່ອໃຊ້ Option VBASupport 1, ອາກິວເມັນ Optional ທີ່ບໍ່ມີຄ່າເລີ່ມຕົ້ນ (= expression) ຈະຖືກກຳນົດຄ່າເລີ່ມຕົ້ນຕາມປະເພດຂໍ້ມູນຂອງມັນ, ຍົກເວັ້ນປະເພດ Variant.


ສ່ວນຍ່ອຍຊື່ປະເພດ (typename)

ສ່ວນຍ່ອຍປະເພດຂໍ້ມູນພື້ນຖານ


      {Boolean|Byte|Currency|Date|Double|Integer|Long|Object|Single|String|Variant}
    
ສ່ວນຍ່ອຍອັກສອນ (char)

ອັກສອນປະກາດປະເພດ


      { % | & | ! | # | $ | @ }
    

ຕົວຢ່າງ


      Option Compatible
      Sub Main
          ProductName = "Office"
          Print ProductName ' ສະແດງຜົນ "LibreOffice"
      End Sub
      
      Private _office As String
      Property Get ProductName As String
          ProductName = _office
      End Property
      Property Let ProductName(value As String)
          _office = "Libre"& value
      End Property
      
ໄອຄອນ ເຄັດລັບ

ໃນກໍລະນີທີ່ບໍ່ມີ Property Let ຫຼື Property Set, Property Get ຈະຊ່ວຍກຳນົດຂໍ້ມູນທີ່ຖືກປ້ອງກັນ ເຊິ່ງບໍ່ສາມາດຖືກແກ້ໄຂໂດຍບັງເອີນຈາກໂມດູນອື່ນໄດ້:



      Option Compatible
      Public Property Get PathDelimiter As String ' ຕົວປ່ຽນແບບອ່ານຢ່າງດຽວ
          Static this As String
          If this = "" Then : Select Case GetGuiType()
              Case 1 : this = ";" ' Windows
              Case 4 : this = ":" ' Linux ຫຼື macOS
              Case Else : Error 423 ' Property ຫຼື ເມທອດບໍ່ໄດ້ຖືກກຳນົດ: PathDelimiter
          End Select : End If
          PathDelimiter = this
      End Property ' PathDelimiter ແບບອ່ານຢ່າງດຽວ
      
      Sub Main
          PathDelimiter = "a sentence" ' ບໍ່ມີຜົນຫຍັງ
      End Sub
      
ໄອຄອນ ບັນທຶກ

ໃຊ້ Let ຫຼື Set ເມື່ອຈັດການກັບບໍລິການ UNO ຫຼື ອັອບເຈັກຂອງຄລາສ:



      Option Compatible
      Sub Main
          'Set anObject = CreateUnoService( "com.sun.star.frame.Desktop" )
          anObject = CreateUnoService( "com.sun.star.frame.Desktop" )
          Print anObject.SupportedServiceNames(0) ' displays "com.sun.star.frame.Frame"
      End Sub
      
      Property Get anObject As Object
          Set anObject = _obj
      End Property
      
      Private _obj As Object
      
      'Property Set anObject(value As Object)
          'Set _obj = value.CurrentFrame
      'End Property
      Property Let anObject(value As Object)
          Set _obj = value.CurrentFrame
      End Property
      
ກະລຸນາສະໜັບສະໜູນພວກເຮົາ!

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