ເນື້ອໃນ

# ຟັງຊັນ CallByName

ຮຽກໃຊ້ຂັ້ນຕອນຍ່ອຍ (subroutine) ໂດຍໃຊ້ຊື່ທີ່ເປັນຂໍ້ຄວາມ.

### ໄວຍາກອນ:

      CallByName(object As Object, ProcName As String, CallType As Integer [,arg0 [,arg1 …]])

### ປະເພດຄ່າທີ່ສົ່ງກັບ:

result: (ເລືອກໄດ້) ຕົວປ່ຽນທີ່ເກັບຜົນໄດ້ຮັບຈາກເມທອດ (method) ຫຼື ຄຸນສົມບັດ (property) ທີ່ຖືກຮຽກ.

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

object: ໂມດູນ Basic, ອິນສະແຕນຊ໌ ClassModule ຫຼື ບໍລິການ UNO ທີ່ເກັບຄຸນສົມບັດ ຫຼື ເມທອດ.

ProcName: Function, Sub ຫຼື Property ທີ່ກຳລັງຖືກຮຽກໃຊ້.

CallType: ປະເພດຂອງການກະທຳ ເຊັ່ນ Get, Let, Method ແລະ Set.

arg0, arg1 …: ພາຣາມິເຕີ (ເລືອກໄດ້) ຂອງ Function ທີ່ສົ່ງໃຫ້ຕາມລຳດັບ.

ອາກິວເມັນ (Arguments) ຕ້ອງຖືກສົ່ງໃຫ້ຕາມລຳດັບດຽວກັນກັບທີ່ກຳນົດໄວ້ໃນເມທອດ. ບໍ່ສາມາດໃຊ້ອາກິວເມັນແບບຄີເວີດ (keyword arguments) ໄດ້.

ຄ່າ | ຄຳອະທິບາຍ CallType
--- | ---
1 | Method: ຮຽກໃຊ້ໂປຣຊີເຈີ (procedure) ໃນຮູບແບບຟັງຊັນ ຫຼື ຊັບຣູທິນ.
2 | Get: ອ່ານຄຸນສົມບັດ ຫຼື ເນື້ອໃນຂອງຕົວປ່ຽນ.
4 | Let: ກຳນົດເນື້ອໃນໃຫ້ກັບ Property ຫຼື ຕົວປ່ຽນ.
8 | Set: ກຳນົດຄ່າອ້າງອີງໃຫ້ກັບຕົວປ່ຽນ Object ຫຼື Variant.

### ຕົວຢ່າງ:

1. ໂມດູນ Calc.Maths ປະກອບດ້ວຍຟັງຊັນ Multiply ທີ່ຮັບລາຍການຕົວເລກທີ່ຫຼາກຫຼາຍ.

2. ດຶງຂໍ້ມູນ ScriptForge.Platform.Architecture ອອກມາ.

3. ຄຸນສົມບັດ DisplayDirectory ຂອງບໍລິການ UNO com.sun.star.ui.dialogs.FilePicker ຖືກຕັ້ງຄ່າໃຫ້ເປັນໂຟນເດີຫຼັກຂອງຜູ້ໃຊ້, ແລະ ອ່ານເນື້ອໃນຂອງມັນສອງຄັ້ງ.

      Sub CallByName_example
          Const _Method = 1, _Get = 2, _Let = 4, _Set = 8

          BasicLibraries.loadLibrary("Calc") ' ໂມດູນຫ້ອງສະໝຸດຜູ້ໃຊ້ Calc.Maths
          Dim cm As Object : cm = Calc.Maths
          MsgBox CallByName(cm, "Multiply", _Method, 3, 45, 1, 89)		' 12015
          MsgBox CallByName(cm, "Multiply", _Method, 1.85e15, 44, 10^8)	' 8.14E+24

          GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
          Dim p As Object : p = CreateScriptService("ScriptForge.Platform")
          MsgBox CallByName(p, "Architecture", _Get) ' 32bit/64bit

          Dim uno As Object : uno = CreateUnoService("com.sun.star.ui.dialogs.OfficeFilePicker")
          Dim fs As Object  : fs  = CreateScriptService("ScriptForge.FileSystem")
          CallByName(uno, "DisplayDirectory", _Let, fs.HomeFolder)
          MsgBox CallByName(uno, "DisplayDirectory", _Get)
          var = CallByName(uno, "getDisplayDirectory", _Get)
      End Sub

### ໂມດູນ Calc.Maths

      Option Compatible ' ໂມດູນ Calc.Maths
      Option Explicit

      Public Function Multiply(ParamArray args() As Double) As Variant
          ''' ຄູນລາຍການຕົວເລກທີ່ຢູ່ໃນຕົວປ່ຽນ '''
          Dim ndx As Integer
          If UBound(args) >= 0 Then
              Multiply = 1.0
              For ndx = 0 To UBound(args)
                  Multiply = Multiply * args(ndx)
              Next ndx
          End If
      End Function 'Calc.Maths.Multiply()

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

ຄຳສັ່ງ Call

ບໍລິການ ScriptForge.Platform

ຄຳສັ່ງ Option Compatible

ຄຳສັ່ງ Option ClassModule

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