ເນື້ອໃນ

# ບໍລິການ SFDialogs.Dialog

ບໍລິການ Dialog ຊ່ວຍໃນການຈັດການໄດອາລັອກ (dialog) ທີ່ສ້າງຂຶ້ນດ້ວຍ Basic Dialog Editor ຫຼື ໄດອາລັອກທີ່ສ້າງຂຶ້ນແບບທັນທີ (on-the-fly). ແຕ່ລະອິນສະແຕນຊ໌ຂອງຄລາສປັດຈຸບັນແມ່ນຕົວແທນຂອງກ່ອງໄດອາລັອກດຽວທີ່ສະແດງໃຫ້ຜູ້ໃຊ້ເຫັນ.

ກ່ອງໄດອາລັອກສາມາດສະແດງໄດ້ທັງໃນຮູບແບບ modal ຫຼື non-modal.

ໃນຮູບແບບ modal, ກ່ອງຈະສະແດງຂຶ້ນ ແລະ ການປະຕິບັດງານຂອງມາກໂຣ (macro) ຈະຖືກຢຸດຊົ່ວຄາວ ຈົນກວ່າຈະມີການກົດປຸ່ມ OK ຫຼື Cancel. ໃນລະຫວ່າງນັ້ນ, ການກະທຳຂອງຜູ້ໃຊ້ໃນກ່ອງນັ້ນສາມາດກະຕຸ້ນໃຫ້ເກີດການເຮັດວຽກທີ່ສະເພາະເຈາະຈົງໄດ້.

ໃນຮູບແບບ non-modal, ກ່ອງໄດອາລັອກຈະ "ລອຍ" ຢູ່ເທິງເດັສທັອບຂອງຜູ້ໃຊ້ ແລະ ການປະຕິບັດງານຂອງມາກໂຣຈະດຳເນີນຕໍ່ໄປຕາມປົກກະຕິ. ໄດອາລັອກແບບ non-modal ຈະປິດລົງເມື່ອຖືກຢຸດດ້ວຍວິທີ Terminate() ຫຼື ເມື່ອເຊດຊັນ (session) ຂອງ LibreOffice ສິ້ນສຸດລົງ. ປຸ່ມປິດໜ້າຕ່າງຈະບໍ່ສາມາດໃຊ້ງານໄດ້ໃນໄດອາລັອກແບບ non-modal.

ກ່ອງໄດອາລັອກຈະຫາຍໄປຈາກໜ່ວຍຄວາມຈຳ ຫຼັງຈາກທີ່ມັນຖືກສັ່ງໃຫ້ຢຸດການເຮັດວຽກຢ່າງຊັດເຈນ.

ບໍລິການ SFDialogs.Dialog ມີຄວາມກ່ຽວພັນຢ່າງໃກ້ຊິດກັບບໍລິການ SFDialogs.DialogControl.

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

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

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

ບໍລິການ Dialog ຖືກເອີ້ນໃຊ້ຜ່ານວິທີ CreateScriptService. ມັນຕ້ອງການອາຄິວເມັ້ນຕຳແໜ່ງເສີມ 3 ຕົວ ເພື່ອກຳນົດກ່ອງໄດອາລັອກທີ່ຈະເປີດໃຊ້ງານ:

Container: "GlobalScope" ສຳລັບຫ້ອງສະໝຸດທີ່ຕິດຕັ້ງມາກັບໂປຣແກຣມ ຫຼື ຊື່ໜ້າຕ່າງຕາມທີ່ກຳນົດໂດຍບໍລິການ ScriptForge.UI. ຄ່າເລີ່ມຕົ້ນເປັນຂໍ້ຄວາມວ່າງ "" ໝາຍເຖິງເອກະສານປັດຈຸບັນ.

Library: ຊື່ຂອງຫ້ອງສະໝຸດທີ່ມີຢູ່ໃນຄອນເທນເນີ (ແຍກຕົວອັກສອນນ້ອຍ-ໃຫຍ່). ຄ່າເລີ່ມຕົ້ນແມ່ນ "Standard".

DialogName: ຂໍ້ຄວາມທີ່ລະບຸຊື່ໄດອາລັອກ (ແຍກຕົວອັກສອນນ້ອຍ-ໃຫຍ່).

ຕົວຢ່າງລຸ່ມນີ້ໃນ Basic ແລະ Python ສະແດງໄດອາລັອກ dlgConsole ເຊິ່ງເປັນສ່ວນໜຶ່ງຂອງຫ້ອງສະໝຸດສ່ວນກາງ ScriptForge:

          Dim oDlg As Object, lButton As Long
          Dim Container As String, Library As String, DialogName As String
          Set oDlg = CreateScriptService("SFDialogs.Dialog", "GlobalScope", "ScriptForge", "dlgConsole")
          '... ເລີ່ມຕົ້ນການຕັ້ງຄ່າການຄວບຄຸມຢູ່ບ່ອນນີ້...
          lButton = oDlg.Execute()
          'ຮູບແບບເລີ່ມຕົ້ນ = Modal
          If lButton = oDlg.OKBUTTON Then
          '... ປະມວນຜົນການຄວບຄຸມ ແລະ ເຮັດສິ່ງທີ່ຈຳເປັນຢູ່ບ່ອນນີ້
          End If
          oDlg.Terminate()

ຫຼື ໃຊ້ Python:

        dlg = CreateScriptService('SFDialogs.Dialog', 'GlobalScope', 'ScriptForge', 'dlgConsole')
        # ... ເລີ່ມຕົ້ນການຕັ້ງຄ່າການຄວບຄຸມຢູ່ບ່ອນນີ້...
        rc = dlg.Execute()
        # ຮູບແບບເລີ່ມຕົ້ນແມ່ນ Modal
        if rc == dlg.OKBUTTON:
            # ... ປະມວນຜົນການຄວບຄຸມ ແລະ ເຮັດສິ່ງທີ່ຈຳເປັນຢູ່ບ່ອນນີ້
        dlg.Terminate()

ໃຊ້ຂໍ້ຄວາມ "GlobalScope" ເປັນອາຄິວເມັ້ນ container ເມື່ອໄດອາລັອກຖືກເກັບໄວ້ໃນ ມາກໂຣ ແລະ ໄດອາລັອກຂອງຂ້ອຍ ຫຼື ໃນ ມາກໂຣ ແລະ ໄດອາລັອກຂອງແອັບພລິເຄຊັນ.

ບໍລິການໄດອາລັອກມີວິທີຕ່າງໆທີ່ສ້າງຕົວຄວບຄຸມໃໝ່ແບບໄດນາມິກໃນໄດອາລັອກທີ່ມີຢູ່ແລ້ວ ເຊິ່ງຖືກກຳນົດໄວ້ລ່ວງໜ້າດ້ວຍ Dialog Editor. ໄດອາລັອກຈະຖືກເລີ່ມຕົ້ນດ້ວຍຕົວຄວບຄຸມໃນ Dialog Editor ແລະ ສາມາດເພີ່ມຕົວຄວບຄຸມໃໝ່ໄດ້ໃນລະຫວ່າງການເຮັດວຽກ (run-time) ກ່ອນ ຫຼື ຫຼັງຄຳສັ່ງ Execute() ຂອງໄດອາລັອກ.

ບໍລິການ Dialog ສາມາດເອີ້ນໃຊ້ໄດ້ຄືກັນ - ຜ່ານວິທີ CreateScriptService - ເມື່ອສ້າງໄດອາລັອກແບບທັນທີ. ມັນຕ້ອງການອາຄິວເມັ້ນຕຳແໜ່ງເສີມສອງຕົວ ຫຼັງຈາກຊື່ຂອງບໍລິການສະເພາະກິດ "NewDialog":

DialogName: ຂໍ້ຄວາມທີ່ລະບຸຊື່ໄດອາລັອກ (ແຍກຕົວອັກສອນນ້ອຍ-ໃຫຍ່).

Place: ຕຳແໜ່ງໜ້າຕ່າງຂອງໄດອາລັອກ ເຊິ່ງອາດເປັນ:

- Basic Array ຫຼື Python tuple ທີ່ມີ 4 ອົງປະກອບ: (X, Y, ຄວາມກວ້າງ, ຄວາມສູງ)

- ວັດຖຸ com.sun.star.awt.Rectangle [X, Y, ຄວາມກວ້າງ, ຄວາມສູງ]

ອົງປະກອບທັງໝົດສະແດງອອກໃນຫົວໜ່ວຍ Map AppFont.

        Sub newDialog()
            Dim oDlg As Object
           oDlg = CreateScriptService("NewDialog", "myDialog1", Array(100,200, 40, 110))
           ' ...
        End Sub

ຫຼື ໃຊ້ Python:

        def newDialog():
           dlg = CreateScriptService('NewDialog', 'myDialog1', (100,200, 40, 110))
           # ... ປະມວນຜົນການຄວບຄຸມ ແລະ ເຮັດສິ່ງທີ່ຈຳເປັນ

ຄຸນສົມບັດ ແລະ ວິທີທັງໝົດທີ່ໃຊ້ໄດ້ກັບໄດອາລັອກທີ່ກຳນົດໄວ້ລ່ວງໜ້າ ແມ່ນມີໃຫ້ໃຊ້ສຳລັບໄດອາລັອກໃໝ່ເຫຼົ່ານີ້ຄືກັນ. ໂດຍສະເພາະແມ່ນຊຸດຂອງວິທີ CreateXXX() ສຳລັບການເພີ່ມຕົວຄວບຄຸມໄດອາລັອກໃໝ່.

## ການດຶງເອົາອິນສະແຕນຊ໌ໄດອາລັອກທີ່ກະຕຸ້ນໃຫ້ເກີດເຫດການໄດອາລັອກ

ອິນສະແຕນຊ໌ຂອງບໍລິການ Dialog ສາມາດດຶງມາໄດ້ຜ່ານບໍລິການ SFDialogs.DialogEvent, ໂດຍມີເງື່ອນໄຂວ່າໄດອາລັອກນັ້ນຕ້ອງຖືກເລີ່ມຕົ້ນດ້ວຍບໍລິການ Dialog. ໃນຕົວຢ່າງລຸ່ມນີ້, oDlg ບັນຈຸອິນສະແຕນຊ໌ Dialog ທີ່ກະຕຸ້ນໃຫ້ເກີດເຫດການໄດອາລັອກ.

        Sub aDialogEventHander(ByRef poEvent As Object)
            Dim oDlg As Object
            Set oDlg = CreateScriptService("SFDialogs.DialogEvent", poEvent)
            ' ...
        End Sub

ຫຼື ໃຊ້ Python:

        def control_event_handler(event: uno):
            dlg = CreateScriptService("SFDialogs.DialogEvent", event)
            # ...

ໝາຍເຫດວ່າໃນຕົວຢ່າງກ່ອນໜ້ານີ້, ຄຳນຳໜ້າ "SFDialogs." ອາດຈະຖືກຕັດອອກໄດ້ຕາມຄວາມເໝາະສົມ.

### ການຈັດການຂໍ້ຜິດພາດ (exceptions) ໃນຕົວຈັດການເຫດການ

ເມື່ອສ້າງຕົວຈັດການເຫດການສຳລັບເຫດການໄດອາລັອກ, ມັນເປັນວິທີທີ່ດີທີ່ຈະຈັດການຂໍ້ຜິດພາດພາຍໃນ subroutine ນັ້ນເອງ. ຕົວຢ່າງ, ສົມມຸດວ່າຕົວຈັດການເຫດການລຸ່ມນີ້ຖືກເອີ້ນໃຊ້ເມື່ອມີການກົດປຸ່ມເມົາສ໌ໃນໜ້າຕ່າງໄດອາລັອກ.

        Sub OnMouseButtonPressed(ByRef oEvent As Object)
        On Local Error GoTo Catch
            Dim oDialog As Object
            oDialog = CreateScriptService("DialogEvent", oEvent)
            ' ປະມວນຜົນເຫດການ
            Exit Sub
        Catch:
            MsgBox SF_Exception.Description
            SF_Exception.Clear
        End Sub

ເອີ້ນໃຊ້ SF_Exception.Clear ຖ້າທ່ານບໍ່ຕ້ອງການໃຫ້ຂໍ້ຜິດພາດແຜ່ກະຈາຍໄປຫຼັງຈາກການເຮັດວຽກຂອງໄດອາລັອກສິ້ນສຸດລົງ.

ໃນ Python, ໃຫ້ໃຊ້ບລັອກ try/except ຂອງມັນເອງສຳລັບການຈັດການຂໍ້ຜິດພາດ ດັ່ງທີ່ສະແດງລຸ່ມນີ້:

        def on_mouse_button_pressed(event=None):
            try:
                dlg = CreateScriptService("DialogEvent", event)
                # ປະມວນຜົນເຫດການ
            except Exception as e:
                # ວັດຖຸ "bas" ແມ່ນອິນສະແຕນຊ໌ຂອງບໍລິການ Basic
                bas.MsgBox(str(e))

## ຄຸນສົມບັດ

ຊື່ | ອ່ານຢ່າງດຽວ | ປະເພດ | ຄຳອະທິບາຍ
--- | --- | --- | ---
OKBUTTON | ແມ່ນ | Integer | ຄ່າ = 1. ມີການກົດປຸ່ມ OK.
CANCELBUTTON | ແມ່ນ | Integer | ຄ່າ = 0. ມີການກົດປຸ່ມ Cancel.
Caption | ບໍ່ | String | ກຳນົດຫົວຂໍ້ຂອງໄດອາລັອກ.
Height | ບໍ່ | Long | ກຳນົດຄວາມສູງຂອງກ່ອງໄດອາລັອກ.
Modal | ແມ່ນ | Boolean | ລະບຸວ່າກ່ອງໄດອາລັອກກຳລັງເຮັດວຽກຢູ່ໃນຮູບແບບ modal ຫຼື ບໍ່.
Name | ແມ່ນ | String | ຊື່ຂອງໄດອາລັອກ
Page | ບໍ່ | Integer | ໄດອາລັອກອາດມີຫຼາຍໜ້າ ເຊິ່ງຜູ້ໃຊ້ສາມາດເລື່ອນເບິ່ງໄດ້ເທື່ອລະຂັ້ນ. ຄຸນສົມບັດ Page ຂອງວັດຖຸ Dialog ກຳນົດວ່າໜ້າໃດຂອງໄດອາລັອກກຳລັງຖືກໃຊ້ງານຢູ່.
Visible | ບໍ່ | Boolean | ກຳນົດວ່າກ່ອງໄດອາລັອກຈະສະແດງໃຫ້ເຫັນເທິງເດັສທັອບຫຼືບໍ່. ໂດຍປົກກະຕິແລ້ວມັນຈະເບິ່ງບໍ່ເຫັນ ຈົນກວ່າຈະມີການເອີ້ນໃຊ້ວິທີ Execute() ແລະ ຈະສະແດງໃຫ້ເຫັນຫຼັງຈາກນັ້ນ.
XDialogModel | ແມ່ນ | ວັດຖຸ UNO | ວັດຖຸ UNO ທີ່ເປັນຕົວແທນຂອງໂມເດວໄດອາລັອກ. ສາມາດເບິ່ງລາຍລະອຽດເພີ່ມເຕີມໄດ້ໃນເອກະສານ Application Programming Interface (API) ທີ່ XControlModel ແລະ UnoControlDialogModel.
XDialogView | ແມ່ນ | ວັດຖຸ UNO | ວັດຖຸ UNO ທີ່ເປັນຕົວແທນຂອງວິວໄດອາລັອກ. ສາມາດເບິ່ງລາຍລະອຽດເພີ່ມເຕີມໄດ້ໃນເອກະສານ Application Programming Interface (API) ທີ່ XControl ແລະ UnoControlDialog.
Width | ບໍ່ | Long | ກຳນົດຄວາມກວ້າງຂອງກ່ອງໄດອາລັອກ.

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

ຄຸນສົມບັດເຫດການ On… ແມ່ນຂໍ້ຄວາມ URI ທີ່ອ້າງອີງເຖິງສະຄຣິບ (script) ທີ່ຖືກກະຕຸ້ນເມື່ອມີເຫດການເກີດຂຶ້ນ. ອ່ານລາຍລະອຽດເພີ່ມເຕີມໄດ້ທີ່ scripting framework URI specification.

ຊື່ | ຄຳອະທິບາຍໃນ Basic IDE
--- | ---
OnFocusGained | ເມື່ອໄດ້ຮັບໂຟກັສ
OnFocusLost | ເມື່ອສູນເສຍໂຟກັສ
OnKeyPressed | ເມື່ອມີການກົດຄີ (Key)
OnKeyReleased | ເມື່ອມີການປ່ອຍຄີ (Key)
OnMouseDragged | ເມື່ອມີການເລື່ອນເມົາສ໌ໃນຂະນະທີ່ກົດຄີ
OnMouseEntered | ເມົາສ໌ຢູ່ທາງໃນ
OnMouseExited | ເມົາສ໌ຢູ່ທາງນອກ
OnMouseMoved | ເມົາສ໌ມີການເຄື່ອນໄຫວ
OnMousePressed | ມີການກົດປຸ່ມເມົາສ໌
OnMouseReleased | ມີການປ່ອຍປຸ່ມເມົາສ໌

ຄຳແນະນຳ: ຄຸນສົມບັດ On… ທັງໝົດສາມາດກຳນົດຜ່ານການຂຽນໂປຣແກຣມໄດ້.
ຕົວຢ່າງ How to display data in a tree control ໃນ LibreOffice Wiki ໄດ້ສາທິດເລື່ອງນີ້ໄວ້.

ການກຳນົດເຫດການຜ່ານ Basic IDE ແລະ ການກຳນົດເຫດການຜ່ານມາກໂຣ ບໍ່ສາມາດເຮັດຮ່ວມກັນໄດ້.

ລາຍຊື່ຂອງວິທີຕ່າງໆໃນບໍລິການ Dialog
Activate Center Controls CloneControl CreateButton CreateCheckBox CreateComboBox CreateCurrencyField CreateDateField CreateFileControl CreateFixedLine CreateFixedText | CreateFormattedField CreateGroupBox CreateHyperlink CreateImageControl CreateListBox CreateNumericField CreatePatternField CreateProgressBar CreateRadioButton CreateScrollBar CreateTableControl CreateTabPageContainer | CreateTextField CreateTimeField CreateTreeControl EndExecute Execute GetTextsFromL10N ImportControl OrderTabs Resize SetPageManager Terminate

ຕົວຄວບຄຸມ TabPageContainer ບໍ່ມີໃຫ້ໃຊ້ໃນ Dialog Editor.

ການກຳນົດຂະໜາດຂອງໄດອາລັອກແມ່ນເຮັດໄດ້ໂດຍການໃຊ້ຫົວໜ່ວຍ Map AppFont. ໄດອາລັອກ ຫຼື ຕົວຄວບຄຸມກໍໃຊ້ຫົວໜ່ວຍ AppFont ເຊັ່ນກັນ, ໃນຂະນະທີ່ສ່ວນສະແດງຜົນ (view) ຂອງພວກມັນໃຊ້ພິກເຊວ (pixels).

## Activate

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

ວິທີນີ້ຖືກເອີ້ນໃຊ້ຈາກເຫດການຂອງໄດອາລັອກ ຫຼື ຕົວຄວບຄຸມ, ຫຼື ເມື່ອໄດອາລັອກສະແດງໃນຮູບແບບ non-modal.

### ໄວຍາກອນ:

svc.Activate(): bool

### ຕົວຢ່າງ:

          Dim oDlg As Object
          Set oDlg = CreateScriptService(,, "myDialog")
          oDlg.Execute()
          ' ...
          oDlg.Activate()

ຕົວຢ່າງໃນ Python ແລະ LibreOffice Basic ທັງສອງຖືວ່າໄດອາລັອກຖືກເກັບໄວ້ໃນຫ້ອງສະໝຸດ Standard ຂອງເອກະສານປັດຈຸບັນ.

         dlg = CreateScriptService(,,'myDialog')
         dlg.Execute()
         # ...
         dlg.Activate()

## Center

ຈັດໃຫ້ອິນສະແຕນຊ໌ໄດອາລັອກປັດຈຸບັນຢູ່ເຄິ່ງກາງຂອງໜ້າຕ່າງຫຼັກ (parent window). ຖ້າບໍ່ມີອາຄິວເມັ້ນ, ວິທີນີ້ຈະຈັດໄດອາລັອກໄວ້ເຄິ່ງກາງຂອງໜ້າຕ່າງປັດຈຸບັນ.

ສົ່ງຄືນຄ່າ True ເມື່ອສຳເລັດ.

### ໄວຍາກອນ:

svc.Center(opt Parent: obj): bool

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

Parent: ວັດຖຸເສີມ ເຊິ່ງອາດເປັນ…

- ວັດຖຸໄດອາລັອກຂອງ ScriptForge

- ວັດຖຸເອກະສານຂອງ ScriptForge (Calc, Base, ...)

### ຕົວຢ່າງ:

##### ໃນ Basic

         Sub TriggerEvent(oEvent As Object)
             Dim oDialog1 As Object, oDialog2 As Object, lExec As Long
             Set oDialog1 = CreateScriptService("DialogEvent", oEvent) ' ໄດອາລັອກທີ່ເຮັດໃຫ້ເກີດເຫດການ
             Set oDialog2 = CreateScriptService("Dialog", ...) ' ເປີດໄດອາລັອກທີສອງ
             oDialog2.Center(oDialog1)
             lExec = oDialog2.Execute()
             Select Case lExec
                 ...
         End Sub

##### ໃນ Python

         def triggerEvent(event: uno):
           dlg1 = CreateScriptService('DialogEvent.Dialog', event)  # ໄດອາລັອກທີ່ເຮັດໃຫ້ເກີດເຫດການ
           dlg2 = CreateScriptService('Dialog', ...)  # ເປີດໄດອາລັອກທີສອງ
           dlg2.Center(dlg1)
           rc = dlg2.Execute()
           if rc is False:
             # ...

## CloneControl

ເຮັດສຳເນົາຕົວຄວບຄຸມທີ່ມີຢູ່ແລ້ວໃນໄດອາລັອກປັດຈຸບັນ. ຕົວຄວບຄຸມທີ່ຖືກເຮັດສຳເນົາຈະຍັງຄືເກົ່າ ແລະ ສາມາດຍ້າຍຕຳແໜ່ງໃໝ່ໄດ້.

### ໄວຍາກອນ:

svc.CloneControl(SourceName: str, ControlName: str, Left: num, Top: num): svc

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

SourceName: ຊື່ຂອງຕົວຄວບຄຸມທີ່ຈະເຮັດສຳເນົາ.

ControlName: ຊື່ຕົວຄວບຄຸມທີ່ຖືກຕ້ອງ (ແຍກຕົວອັກສອນນ້ອຍ-ໃຫຍ່). ມັນຕ້ອງຍັງບໍ່ມີຢູ່ໃນປັດຈຸບັນ.

Left, Top: ພິກັດຂອງຕົວຄວບຄຸມໃໝ່ທີ່ສະແດງອອກໃນຫົວໜ່ວຍ Map AppFont.

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

ອິນສະແຕນຊ໌ຂອງບໍລິການ SFDialogs.DialogControl ຫຼື Nothing.

### ຕົວຢ່າງ:

##### ໃນ Basic

          Set myButton2 = oDlg.CloneControl("Button1", "Button2", 30, 30)

##### ໃນ Python

         dlg = dlg.CloneControl('Button1', 'Button2', 30, 30)

## Controls

ສົ່ງຄືນຄ່າໃດໜຶ່ງດັ່ງນີ້:

- ລາຍຊື່ຂອງຕົວຄວບຄຸມທີ່ມີຢູ່ໃນໄດອາລັອກ

- ອິນສະແຕນຊ໌ຄລາສ DialogControl ອີງຕາມຊື່ຂອງມັນ

### ໄວຍາກອນ:

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

svc.Controls(controlname: str): svc

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

ControlName : ຊື່ຕົວຄວບຄຸມທີ່ຖືກຕ້ອງ (ແຍກຕົວອັກສອນນ້ອຍ-ໃຫຍ່). ຖ້າບໍ່ໄດ້ລະບຸ, ມັນຈະສົ່ງຄືນລາຍຊື່ຕົວຄວບຄຸມເປັນອາເຣທີ່ເລີ່ມຈາກສູນ.

### ຕົວຢ່າງ:

          Dim myDialog As Object, myList As Variant, myControl As Object
          Set myDialog = CreateScriptService("SFDialogs.Dialog", , "Standard", "Dialog1")
          myList = myDialog.Controls()
          Set myControl = myDialog.Controls("myTextBox")

         dlg = CreateScriptService('SFDialogs.Dialog','', 'Standard', 'Dialog1')
         ctrls = dlg.Controls()
         ctrl = dlg.Controls('myTextBox')

## CreateButton

ສ້າງຕົວຄວບຄຸມໃໝ່ປະເພດ Button ໃນໄດອາລັອກປັດຈຸບັນ.

### ໄວຍາກອນ:

svc.CreateButton(ControlName: str, Place: any, Toggle: bool = False, Push: str = ""): svc

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

ControlName: ຊື່ຂອງຕົວຄວບຄຸມໃໝ່. ມັນຕ້ອງຍັງບໍ່ມີຢູ່ໃນປັດຈຸບັນ.

Place: ອາດເປັນ…

- Basic Array ຫຼື Python tuple ທີ່ມີ 4 ອົງປະກອບ: (X, Y, ຄວາມກວ້າງ, ຄວາມສູງ)

- ວັດຖຸ com.sun.star.awt.Rectangle [X, Y, ຄວາມກວ້າງ, ຄວາມສູງ]

ອົງປະກອບທັງໝົດສະແດງອອກໃນຫົວໜ່ວຍ Map AppFont.

Toggle: ເມື່ອເປັນ True, ປຸ່ມແບບ Toggle ຈະຖືກສ້າງຂຶ້ນ. ຄ່າເລີ່ມຕົ້ນ = False

Push: "OK", "CANCEL" ຫຼື "" (ຄ່າເລີ່ມຕົ້ນ)

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

ອິນສະແຕນຊ໌ຂອງບໍລິການ SFDialogs.DialogControl ຫຼື Nothing.

### ຕົວຢ່າງ:

##### ໃນ Basic

         Set myButton = oDlg.CreateButton("Button1", Array(20, 20, 60, 15))

##### ໃນ Python

         myButton = dlg.CreateButton('Button1', (20, 20, 60, 15))

## CreateCheckBox

ສ້າງຕົວຄວບຄຸມໃໝ່ປະເພດ CheckBox ໃນໄດອາລັອກປັດຈຸບັນ.

### ໄວຍາກອນ:

svc.CreateCheckBox(ControlName: str, Place: any, Multiline: bool = False): svc

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

ControlName: ຊື່ຂອງຕົວຄວບຄຸມໃໝ່. ມັນຕ້ອງຍັງບໍ່ມີຢູ່ໃນປັດຈຸບັນ.

Place: ອາດເປັນ…

- Basic Array ຫຼື Python tuple ທີ່ມີ 4 ອົງປະກອບ: (X, Y, ຄວາມກວ້າງ, ຄວາມສູງ)

- ວັດຖຸ com.sun.star.awt.Rectangle [X, Y, ຄວາມກວ້າງ, ຄວາມສູງ]

ອົງປະກອບທັງໝົດສະແດງອອກໃນຫົວໜ່ວຍ Map AppFont.

MultiLine: ເມື່ອເປັນ True (ຄ່າເລີ່ມຕົ້ນ = False), ຄຳອະທິບາຍ (caption) ອາດສະແດງໄດ້ຫຼາຍກວ່າໜຶ່ງບັນທັດ.

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

ອິນສະແຕນຊ໌ຂອງບໍລິການ SFDialogs.DialogControl ຫຼື Nothing.

### ຕົວຢ່າງ:

##### ໃນ Basic

         Set myCheckBox = oDlg.CreateCheckBox("CheckBox1", Array(20, 20, 60, 15), MultiLine := True)

##### ໃນ Python

         myCheckBox = dlg.CreateCheckBox('CheckBox1', (20, 20, 60, 15), MultiLine = True)

## CreateComboBox

ສ້າງຕົວຄວບຄຸມໃໝ່ປະເພດ ComboBox ໃນໄດອາລັອກປັດຈຸບັນ.

### ໄວຍາກອນ:

svc.CreateComboBox(ControlName: str, Place: any, Border: str = "3D", DropDown: bool = True, LineCount: num = 5): svc

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

ControlName: ຊື່ຂອງຕົວຄວບຄຸມໃໝ່. ມັນຕ້ອງຍັງບໍ່ມີຢູ່ໃນປັດຈຸບັນ.

Place: ອາດເປັນ…

- Basic Array ຫຼື Python tuple ທີ່ມີ 4 ອົງປະກອບ: (X, Y, ຄວາມກວ້າງ, ຄວາມສູງ)

- ວັດຖຸ com.sun.star.awt.Rectangle [X, Y, ຄວາມກວ້າງ, ຄວາມສູງ]

ອົງປະກອບທັງໝົດສະແດງອອກໃນຫົວໜ່ວຍ Map AppFont.

Border: "3D" (ຄ່າເລີ່ມຕົ້ນ), "FLAT" ຫຼື "NONE"

DropDown: ເມື່ອເປັນ True (ຄ່າເລີ່ມຕົ້ນ), ປຸ່ມແບບ drop down ຈະຖືກສະແດງ

LineCount: ກຳນົດຈຳນວນບັນທັດສູງສຸດທີ່ຈະສະແດງໃນ drop down (ຄ່າເລີ່ມຕົ້ນ = 5)

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

ອິນສະແຕນຊ໌ຂອງບໍລິການ SFDialogs.DialogControl ຫຼື Nothing.

### ຕົວຢ່າງ:

##### ໃນ Basic

         Set myComboBox = oDlg.CreateComboBox("ComboBox1", Array(20, 20, 60, 15), Dropdown := True)

##### ໃນ Python

         myComboBox = dlg.CreateComboBox('ComboBox1', (20, 20, 60, 15), Dropdown = True)

## CreateCurrencyField

ສ້າງຕົວຄວບຄຸມໃໝ່ປະເພດ CurrencyField ໃນໄດອາລັອກປັດຈຸບັນ.

### ໄວຍາກອນ:

svc.CreateCurrencyField(ControlName: str, Place: any, Border ="3D", SpinButton: bool = False, MinValue: num = -1000000, MaxValue: num = +1000000, Increment: num = 1, Accuracy: num = 2): svc

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

ControlName: ຊື່ຂອງຕົວຄວບຄຸມໃໝ່. ມັນຕ້ອງຍັງບໍ່ມີຢູ່ໃນປັດຈຸບັນ.

Place: ອາດເປັນ…

- Basic Array ຫຼື Python tuple ທີ່ມີ 4 ອົງປະກອບ: (X, Y, ຄວາມກວ້າງ, ຄວາມສູງ)

- ວັດຖຸ com.sun.star.awt.Rectangle [X, Y, ຄວາມກວ້າງ, ຄວາມສູງ]

ອົງປະກອບທັງໝົດສະແດງອອກໃນຫົວໜ່ວຍ Map AppFont.

Border: "3D" (ຄ່າເລີ່ມຕົ້ນ), "FLAT" ຫຼື "NONE"

SpinButton: ເມື່ອເປັນ True (ຄ່າເລີ່ມຕົ້ນ = False), ປຸ່ມແບບປັບຄ່າ (spin button) ຈະປະກົດຂຶ້ນ

MinValue: ຄ່າທີ່ນ້ອຍທີ່ສຸດທີ່ສາມາດປ້ອນເຂົ້າໃນຕົວຄວບຄຸມໄດ້. ຄ່າເລີ່ມຕົ້ນ = -1000000

MaxValue: ຄ່າທີ່ໃຫຍ່ທີ່ສຸດທີ່ສາມາດປ້ອນເຂົ້າໃນຕົວຄວບຄຸມໄດ້. ຄ່າເລີ່ມຕົ້ນ = +1000000

Increment: ຄ່າທີ່ເພີ່ມຂຶ້ນແຕ່ລະຂັ້ນເມື່ອກົດປຸ່ມປັບຄ່າ. ຄ່າເລີ່ມຕົ້ນ = 1

Accuracy: ກຳນົດຈຳນວນຈຸດທົດສະນິຍົມ. ຄ່າເລີ່ມຕົ້ນ = 2 ຕຳແໜ່ງ

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

ອິນສະແຕນຊ໌ຂອງບໍລິການ SFDialogs.DialogControl ຫຼື Nothing.

### ຕົວຢ່າງ:

##### ໃນ Basic

         Set myCurrencyField = oDlg.CreateCurrencyField("CurrencyField1", Array(20, 20, 60, 15), SpinButton := True)

##### ໃນ Python

         myCurrencyField = dlg.CreateCurrencyField('CurrencyField1', (20, 20, 60, 15), SpinButton = True)

## CreateDateField

ສ້າງຕົວຄວບຄຸມໃໝ່ປະເພດ DateField ໃນໄດອາລັອກປັດຈຸບັນ.

### ໄວຍາກອນ:

svc.CreateDateField(ControlName: str, Place: any, Border: str = "3D", DropDown: bool = False, opt MinDate: datetime, opt MaxDate: datetime): svc

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

ControlName: ຊື່ຂອງຕົວຄວບຄຸມໃໝ່. ມັນຕ້ອງຍັງບໍ່ມີຢູ່ໃນປັດຈຸບັນ.

Place: ອາດເປັນ…

- Basic Array ຫຼື Python tuple ທີ່ມີ 4 ອົງປະກອບ: (X, Y, ຄວາມກວ້າງ, ຄວາມສູງ)

- ວັດຖຸ com.sun.star.awt.Rectangle [X, Y, ຄວາມກວ້າງ, ຄວາມສູງ]

ອົງປະກອບທັງໝົດສະແດງອອກໃນຫົວໜ່ວຍ Map AppFont.

Border: "3D" (ຄ່າເລີ່ມຕົ້ນ), "FLAT" ຫຼື "NONE"

DropDown: ເມື່ອເປັນ True (ຄ່າເລີ່ມຕົ້ນ = False), ປຸ່ມແບບ dropdown ຈະຖືກສະແດງ

MinDate: ວັນທີທີ່ນ້ອຍທີ່ສຸດທີ່ສາມາດປ້ອນເຂົ້າໃນຕົວຄວບຄຸມໄດ້. ຄ່າເລີ່ມຕົ້ນ = 1900-01-01

MaxDate: ວັນທີທີ່ໃຫຍ່ທີ່ສຸດທີ່ສາມາດປ້ອນເຂົ້າໃນຕົວຄວບຄຸມໄດ້. ຄ່າເລີ່ມຕົ້ນ = 2200-12-31

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

ອິນສະແຕນຊ໌ຂອງບໍລິການ SFDialogs.DialogControl ຫຼື Nothing.

### ຕົວຢ່າງ:

##### ໃນ Basic

         Set myDateField = oDlg.CreateDateField("DateField1", Array(20, 20, 60, 15), Dropdown := True)

##### ໃນ Python

         myDateField = dlg.CreateDateField('DateField1', (20, 20, 60, 15), Dropdown = True)

## CreateFileControl

ສ້າງຕົວຄວບຄຸມໃໝ່ປະເພດ FileControl ໃນໄດອາລັອກປັດຈຸບັນ.

### ໄວຍາກອນ:

svc.CreateFileControl(ControlName: str, Place: any, Border: str = "3D"): svc

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

ControlName: ຊື່ຂອງຕົວຄວບຄຸມໃໝ່. ມັນຕ້ອງຍັງບໍ່ມີຢູ່ໃນປັດຈຸບັນ.

Place: ອາດເປັນ…

- Basic Array ຫຼື Python tuple ທີ່ມີ 4 ອົງປະກອບ: (X, Y, ຄວາມກວ້າງ, ຄວາມສູງ)

- ວັດຖຸ com.sun.star.awt.Rectangle [X, Y, ຄວາມກວ້າງ, ຄວາມສູງ]

ອົງປະກອບທັງໝົດສະແດງອອກໃນຫົວໜ່ວຍ Map AppFont.

Border: "3D" (ຄ່າເລີ່ມຕົ້ນ), "FLAT" ຫຼື "NONE"

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

ອິນສະແຕນຊ໌ຂອງບໍລິການ SFDialogs.DialogControl ຫຼື Nothing.

### ຕົວຢ່າງ:

##### ໃນ Basic

         Set myFileControl = oDlg.CreateFileControl("FileControl1", Array(20, 20, 60, 15))

##### ໃນ Python

         myFileControl = dlg.CreateFileControl('FileControl1', (20, 20, 60, 15))

## CreateFixedLine

ສ້າງຕົວຄວບຄຸມໃໝ່ປະເພດ FixedLine ໃນໄດອາລັອກປັດຈຸບັນ.

### ໄວຍາກອນ:

svc.CreateFixedLine(ControlName: str, Place: any, Orientation: str): svc

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

ControlName: ຊື່ຂອງຕົວຄວບຄຸມໃໝ່. ມັນຕ້ອງຍັງບໍ່ມີຢູ່ໃນປັດຈຸບັນ.

Place: ອາດເປັນ…

- Basic Array ຫຼື Python tuple ທີ່ມີ 4 ອົງປະກອບ: (X, Y, ຄວາມກວ້າງ, ຄວາມສູງ)

- ວັດຖຸ com.sun.star.awt.Rectangle [X, Y, ຄວາມກວ້າງ, ຄວາມສູງ]

ອົງປະກອບທັງໝົດສະແດງອອກໃນຫົວໜ່ວຍ Map AppFont.

Orientation: ສຳລັບແນວນອນໃຫ້ໃຊ້ "H" ຫຼື "Horizontal"; ສຳລັບແນວຕັ້ງໃຫ້ໃຊ້ "V" ຫຼື "Vertical".

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

ອິນສະແຕນຊ໌ຂອງບໍລິການ SFDialogs.DialogControl ຫຼື Nothing.

### ຕົວຢ່າງ:

##### ໃນ Basic

         Set myFixedLine = oDlg.CreateFixedLine("FixedLine1", Array(20, 20, 60, 15), Orientation := "vertical")

##### ໃນ Python

         myFixedLine = dlg.CreateFixedLine('FixedLine1', (20, 20, 60, 15), Orientation = 'vertical')

## CreateFixedText

ສ້າງຕົວຄວບຄຸມໃໝ່ປະເພດ FixedText ໃນໄດອາລັອກປັດຈຸບັນ.

### ໄວຍາກອນ:

svc.CreateFixedText(ControlName: str, Place: any, Border: str = "3D", MultiLine: bool = False, Align: str = "LEFT", VerticalAlign: str = "TOP"): svc

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

ControlName: ຊື່ຂອງຕົວຄວບຄຸມໃໝ່. ມັນຕ້ອງຍັງບໍ່ມີຢູ່ໃນປັດຈຸບັນ.

Place: ອາດເປັນ…

- Basic Array ຫຼື Python tuple ທີ່ມີ 4 ອົງປະກອບ: (X, Y, ຄວາມກວ້າງ, ຄວາມສູງ)

- ວັດຖຸ com.sun.star.awt.Rectangle [X, Y, ຄວາມກວ້າງ, ຄວາມສູງ]

ອົງປະກອບທັງໝົດສະແດງອອກໃນຫົວໜ່ວຍ Map AppFont.

Border: "NONE" (ຄ່າເລີ່ມຕົ້ນ), "FLAT" ຫຼື "3D"

Multiline: ເມື່ອເປັນ True (ຄ່າເລີ່ມຕົ້ນ = False), ຄຳອະທິບາຍອາດສະແດງໄດ້ຫຼາຍກວ່າໜຶ່ງບັນທັດ

Align: ການຈັດວາງແນວນອນ, "LEFT" (ຄ່າເລີ່ມຕົ້ນ), "CENTER" ຫຼື "RIGHT"

VerticalAlign: ການຈັດວາງແນວຕັ້ງ, "TOP" (ຄ່າເລີ່ມຕົ້ນ), "MIDDLE" ຫຼື "BOTTOM"

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

ອິນສະແຕນຊ໌ຂອງບໍລິການ SFDialogs.DialogControl ຫຼື Nothing.

### ຕົວຢ່າງ:

##### ໃນ Basic

         Set myFixedText = oDlg.CreateFixedText("FixedText1", Array(20, 20, 60, 15), MultiLine := True)

##### ໃນ Python

         myFixedText = dlg.CreateFixedText('FixedText1', (20, 20, 60, 15), MultiLine = True)

## CreateFormattedField

ສ້າງຕົວຄວບຄຸມໃໝ່ປະເພດ FormattedField ໃນໄດອາລັອກປັດຈຸບັນ.

### ໄວຍາກອນ:

svc.CreateFormattedField(ControlName: str, Place: any, Border: str = "3D", SpinButton: bool = False, MinValue: num = -1000000, MaxValue: num = +1000000): svc

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

ControlName: ຊື່ຂອງຕົວຄວບຄຸມໃໝ່. ມັນຕ້ອງຍັງບໍ່ມີຢູ່ໃນປັດຈຸບັນ.

Place: ອາດເປັນ…

- Basic Array ຫຼື Python tuple ທີ່ມີ 4 ອົງປະກອບ: (X, Y, ຄວາມກວ້າງ, ຄວາມສູງ)

- ວັດຖຸ com.sun.star.awt.Rectangle [X, Y, ຄວາມກວ້າງ, ຄວາມສູງ]

ອົງປະກອບທັງໝົດສະແດງອອກໃນຫົວໜ່ວຍ Map AppFont.

Border: "3D" (ຄ່າເລີ່ມຕົ້ນ), "FLAT" ຫຼື "NONE"

SpinButton: ເມື່ອເປັນ True (ຄ່າເລີ່ມຕົ້ນ = False), ປຸ່ມແບບປັບຄ່າຈະປະກົດຂຶ້ນ

MinValue: ຄ່າທີ່ນ້ອຍທີ່ສຸດທີ່ສາມາດປ້ອນເຂົ້າໃນຕົວຄວບຄຸມໄດ້. ຄ່າເລີ່ມຕົ້ນ = -1000000

MaxValue: ຄ່າທີ່ໃຫຍ່ທີ່ສຸດທີ່ສາມາດປ້ອນເຂົ້າໃນຕົວຄວບຄຸມໄດ້. ຄ່າເລີ່ມຕົ້ນ = +1000000

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

ອິນສະແຕນຊ໌ຂອງບໍລິການ SFDialogs.DialogControl ຫຼື Nothing.

### ຕົວຢ່າງ:

##### ໃນ Basic

         Set myFormattedField = oDlg.CreateFormattedField("FormattedField1", Array(20, 20, 60, 15), SpinButton := True)

##### ໃນ Python

         myFormattedField = dlg.CreateFormattedField('FormattedField1', (20, 20, 60, 15), SpinButton = True)

## CreateGroupBox

ສ້າງຕົວຄວບຄຸມໃໝ່ປະເພດ GroupBox ໃນໄດອາລັອກປັດຈຸບັນ.

### ໄວຍາກອນ:

svc.CreateGroupBox(ControlName: str, Place: any): svc

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

ControlName: ຊື່ຂອງຕົວຄວບຄຸມໃໝ່. ມັນຕ້ອງຍັງບໍ່ມີຢູ່ໃນປັດຈຸບັນ.

Place: ອາດເປັນ…

- Basic Array ຫຼື Python tuple ທີ່ມີ 4 ອົງປະກອບ: (X, Y, ຄວາມກວ້າງ, ຄວາມສູງ)

- ວັດຖຸ com.sun.star.awt.Rectangle [X, Y, ຄວາມກວ້າງ, ຄວາມສູງ]

ອົງປະກອບທັງໝົດສະແດງອອກໃນຫົວໜ່ວຍ Map AppFont.

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

ອິນສະແຕນຊ໌ຂອງບໍລິການ SFDialogs.DialogControl ຫຼື Nothing.

### ຕົວຢ່າງ:

##### ໃນ Basic

         Set myGroupBox = oDlg.CreateGroupBox("GroupBox1", Array(20, 20, 60, 15))

##### ໃນ Python

         myGroupBox = dlg.CreateGroupBox('GroupBox1', (20, 20, 60, 15))

## CreateHyperlink

ສ້າງຕົວຄວບຄຸມໃໝ່ປະເພດ Hyperlink ໃນໄດອາລັອກປັດຈຸບັນ.

### ໄວຍາກອນ:

svc.CreateHyperlink(ControlName: str, Place: any, Border: str = "NONE", MultiLine: bool = False, Align: str = "LEFT", VerticalAlign: str = "TOP"): svc

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

ControlName: ຊື່ຂອງຕົວຄວບຄຸມໃໝ່. ມັນຕ້ອງຍັງບໍ່ມີຢູ່ໃນປັດຈຸບັນ.

Place: ອາດເປັນ…

- Basic Array ຫຼື Python tuple ທີ່ມີ 4 ອົງປະກອບ: (X, Y, ຄວາມກວ້າງ, ຄວາມສູງ)

- ວັດຖຸ com.sun.star.awt.Rectangle [X, Y, ຄວາມກວ້າງ, ຄວາມສູງ]

ອົງປະກອບທັງໝົດສະແດງອອກໃນຫົວໜ່ວຍ Map AppFont.

Border: "NONE" (ຄ່າເລີ່ມຕົ້ນ), "FLAT" ຫຼື "3D"

MultiLine: ເມື່ອເປັນ True (ຄ່າເລີ່ມຕົ້ນ = False), ຄຳອະທິບາຍອາດສະແດງໄດ້ຫຼາຍກວ່າໜຶ່ງບັນທັດ

Align: ການຈັດວາງແນວນອນ, "LEFT" (ຄ່າເລີ່ມຕົ້ນ), "CENTER" ຫຼື "RIGHT"

VerticalAlign: ການຈັດວາງແນວຕັ້ງ, "TOP" (ຄ່າເລີ່ມຕົ້ນ), "MIDDLE" ຫຼື "BOTTOM"

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

ອິນສະແຕນຊ໌ຂອງບໍລິການ SFDialogs.DialogControl ຫຼື Nothing.

### ຕົວຢ່າງ:

##### ໃນ Basic

         Set myHyperlink = oDlg.CreateHyperlink("Hyperlink1", Array(20, 20, 60, 15), MultiLine := True)

##### ໃນ Python

         myHyperlink = dlg.CreateHyperlink('Hyperlink1', (20, 20, 60, 15), MultiLine = True)

## CreateImageControl

ສ້າງຕົວຄວບຄຸມໃໝ່ປະເພດ ImageControl ໃນໄດອາລັອກປັດຈຸບັນ.

### ໄວຍາກອນ:

svc.CreateImageControl(ControlName: str, Place: any, Border: str = "3D", Scale: str = "FITTOSIZE"): svc

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

ControlName: ຊື່ຂອງຕົວຄວບຄຸມໃໝ່. ມັນຕ້ອງຍັງບໍ່ມີຢູ່ໃນປັດຈຸບັນ.

Place: ອາດເປັນ…

- Basic Array ຫຼື Python tuple ທີ່ມີ 4 ອົງປະກອບ: (X, Y, ຄວາມກວ້າງ, ຄວາມສູງ)

- ວັດຖຸ com.sun.star.awt.Rectangle [X, Y, ຄວາມກວ້າງ, ຄວາມສູງ]

ອົງປະກອບທັງໝົດສະແດງອອກໃນຫົວໜ່ວຍ Map AppFont.

Border: "3D" (ຄ່າເລີ່ມຕົ້ນ), "FLAT" ຫຼື "NONE"

Scale: ໜຶ່ງໃນຄ່າດັ່ງນີ້: "FITTOSIZE" (ຄ່າເລີ່ມຕົ້ນ), "KEEPRATIO" ຫຼື "NO"

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

ອິນສະແຕນຊ໌ຂອງບໍລິການ SFDialogs.DialogControl ຫຼື Nothing.

### ຕົວຢ່າງ:

##### ໃນ Basic

         Set myImageControl = oDlg.CreateImageControl("ImageControl1", Array(20, 20, 60, 15))

##### ໃນ Python

           myImageControl = dlg.CreateImageControl('ImageControl1", (20, 20, 60, 15))

## CreateListBox

ສ້າງຕົວຄວບຄຸມໃໝ່ປະເພດ ListBox ໃນໄດອາລັອກປັດຈຸບັນ.

### ໄວຍາກອນ:

svc.CreateListBox(ControlName: str, Place: any, Border: str = "3D", DropDown: bool = True, LineCount: num = 5, MultiSelect: bool = False): svc

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

ControlName: ຊື່ຂອງຕົວຄວບຄຸມໃໝ່. ມັນຕ້ອງຍັງບໍ່ມີຢູ່ໃນປັດຈຸບັນ.

Place: ອາດເປັນ…

- Basic Array ຫຼື Python tuple ທີ່ມີ 4 ອົງປະກອບ: (X, Y, ຄວາມກວ້າງ, ຄວາມສູງ)

- ວັດຖຸ com.sun.star.awt.Rectangle [X, Y, ຄວາມກວ້າງ, ຄວາມສູງ]

ອົງປະກອບທັງໝົດສະແດງອອກໃນຫົວໜ່ວຍ Map AppFont.

Border: "3D" (ຄ່າເລີ່ມຕົ້ນ), "FLAT" ຫຼື "NONE"

DropDown: ເມື່ອເປັນ True (ຄ່າເລີ່ມຕົ້ນ), ປຸ່ມແບບ drop down ຈະຖືກສະແດງ

LineCount: ກຳນົດຈຳນວນບັນທັດສູງສຸດທີ່ຈະສະແດງໃນ drop down (ຄ່າເລີ່ມຕົ້ນ = 5)

MultiSelect: ເມື່ອເປັນ True, ສາມາດເລືອກໄດ້ຫຼາຍກວ່າ 1 ລາຍການ. ຄ່າເລີ່ມຕົ້ນ = False

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

ອິນສະແຕນຊ໌ຂອງບໍລິການ SFDialogs.DialogControl ຫຼື Nothing.

### ຕົວຢ່າງ:

##### ໃນ Basic

         Set myListBox = oDlg.CreateListBox("ListBox1", Array(20, 20, 60, 15), Dropdown := True, MultiSelect := True)

##### ໃນ Python

         myListBox = dlg.CreateListBox('ListBox1', (20, 20, 60, 15), Dropdown = True, MultiSelect = True)

## CreateNumericField

ສ້າງຕົວຄວບຄຸມໃໝ່ປະເພດ NumericField ໃນໄດອາລັອກປັດຈຸບັນ.

### ໄວຍາກອນ:

svc.CreateNumericField(ControlName: str, Place: any, Border: str = "3D", SpinButton: bool = False, MinValue: num = -1000000, MaxValue: num = 1000000, Increment: num = 1, Accuracy: num = 2): svc

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

ControlName: ຊື່ຂອງຕົວຄວບຄຸມໃໝ່. ມັນຕ້ອງຍັງບໍ່ມີຢູ່ໃນປັດຈຸບັນ.

Place: ອາດເປັນ…

- Basic Array ຫຼື Python tuple ທີ່ມີ 4 ອົງປະກອບ: (X, Y, ຄວາມກວ້າງ, ຄວາມສູງ)

- ວັດຖຸ com.sun.star.awt.Rectangle [X, Y, ຄວາມກວ້າງ, ຄວາມສູງ]

ອົງປະກອບທັງໝົດສະແດງອອກໃນຫົວໜ່ວຍ Map AppFont.

Border: "3D" (ຄ່າເລີ່ມຕົ້ນ), "FLAT" ຫຼື "NONE"

SpinButton: ເມື່ອເປັນ True (ຄ່າເລີ່ມຕົ້ນ = False), ປຸ່ມແບບປັບຄ່າຈະປະກົດຂຶ້ນ

MinValue: ຄ່າທີ່ນ້ອຍທີ່ສຸດທີ່ສາມາດປ້ອນເຂົ້າໃນຕົວຄວບຄຸມໄດ້. ຄ່າເລີ່ມຕົ້ນ = -1000000

MaxValue: ຄ່າທີ່ໃຫຍ່ທີ່ສຸດທີ່ສາມາດປ້ອນເຂົ້າໃນຕົວຄວບຄຸມໄດ້. ຄ່າເລີ່ມຕົ້ນ = +1000000

Increment: ຄ່າທີ່ເພີ່ມຂຶ້ນແຕ່ລະຂັ້ນເມື່ອກົດປຸ່ມປັບຄ່າ. ຄ່າເລີ່ມຕົ້ນ = 1

Accuracy: ກຳນົດຈຳນວນຈຸດທົດສະນິຍົມ. ຄ່າເລີ່ມຕົ້ນ = 2 ຕຳແໜ່ງ

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

ອິນສະແຕນຊ໌ຂອງບໍລິການ SFDialogs.DialogControl ຫຼື Nothing.

### ຕົວຢ່າງ:

##### ໃນ Basic

         Set myNumericField = oDlg.CreateNumericField("NumericField1", Array(20, 20, 60, 15), SpinButton := True)

##### ໃນ Python

         myNumericField = dlg.CreateNumericField('NumericField1', (20, 20, 60, 15), SpinButton = True)

## CreatePatternField

ສ້າງຕົວຄວບຄຸມໃໝ່ປະເພດ PatternField ໃນໄດອາລັອກປັດຈຸບັນ.

### ໄວຍາກອນ:

svc.CreatePatternField(ControlName: str, Place: any, Border: str = "3D", EditMask: str, opt LiteralMax: str): svc

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

ControlName: ຊື່ຂອງຕົວຄວບຄຸມໃໝ່. ມັນຕ້ອງຍັງບໍ່ມີຢູ່ໃນປັດຈຸບັນ.

Place: ອາດເປັນ…

- Basic Array ຫຼື Python tuple ທີ່ມີ 4 ອົງປະກອບ: (X, Y, ຄວາມກວ້າງ, ຄວາມສູງ)

- ວັດຖຸ com.sun.star.awt.Rectangle [X, Y, ຄວາມກວ້າງ, ຄວາມສູງ]

ອົງປະກອບທັງໝົດສະແດງອອກໃນຫົວໜ່ວຍ Map AppFont.

Border: "3D" (ຄ່າເລີ່ມຕົ້ນ), "FLAT" ຫຼື "NONE"

EditMask: ລະຫັດຕົວອັກສອນທີ່ກຳນົດວ່າຜູ້ໃຊ້ສາມາດປ້ອນຫຍັງໄດ້ແດ່
ເບິ່ງຂໍ້ມູນເພີ່ມເຕີມໃນ wiki ທີ່ Pattern_Field.

LiteralMask: ບັນຈຸຄ່າເລີ່ມຕົ້ນທີ່ຈະສະແດງໃນ pattern field

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

ອິນສະແຕນຊ໌ຂອງບໍລິການ SFDialogs.DialogControl ຫຼື Nothing.

### ຕົວຢ່າງ:

##### ໃນ Basic

         Set myPatternField = oDlg.CreatePatternField("PatternField1", Array(20, 20, 60, 15), EditMask := "NNLNNLLLLL", LiteralMask := "__.__.2002")

##### ໃນ Python

         myPatternField = dlg.CreatePatternField('PatternField1', (20, 20, 60, 15), EditMask = 'NNLNNLLLLL', LiteralMask = '__.__.2002')

## CreateProgressBar

ສ້າງຕົວຄວບຄຸມໃໝ່ປະເພດ ProgressBar ໃນໄດອາລັອກປັດຈຸບັນ.

### ໄວຍາກອນ:

svc.CreateProgressBar(ControlName: str, opt Place: any, Border: str = "3D", MinValue: num = 0, MaxValue: num = 100): svc

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

ControlName: ຊື່ຂອງຕົວຄວບຄຸມໃໝ່. ມັນຕ້ອງຍັງບໍ່ມີຢູ່ໃນປັດຈຸບັນ.

Place: ອາດເປັນ…

- Basic Array ຫຼື Python tuple ທີ່ມີ 4 ອົງປະກອບ: (X, Y, ຄວາມກວ້າງ, ຄວາມສູງ)

- ວັດຖຸ com.sun.star.awt.Rectangle [X, Y, ຄວາມກວ້າງ, ຄວາມສູງ]

ອົງປະກອບທັງໝົດສະແດງອອກໃນຫົວໜ່ວຍ Map AppFont.

Border: "3D" (ຄ່າເລີ່ມຕົ້ນ), "FLAT" ຫຼື "NONE"

MinValue: ຄ່າທີ່ນ້ອຍທີ່ສຸດທີ່ສາມາດປ້ອນເຂົ້າໃນຕົວຄວບຄຸມໄດ້. ຄ່າເລີ່ມຕົ້ນ = 0

MaxValue: ຄ່າທີ່ໃຫຍ່ທີ່ສຸດທີ່ສາມາດປ້ອນເຂົ້າໃນຕົວຄວບຄຸມໄດ້. ຄ່າເລີ່ມຕົ້ນ = 100

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

ອິນສະແຕນຊ໌ຂອງບໍລິການ SFDialogs.DialogControl ຫຼື Nothing.

### ຕົວຢ່າງ:

##### ໃນ Basic

         Set myProgressBar = oDlg.CreateProgressBar("ProgressBar1", Array(20, 20, 60, 15), MaxValue := 1000)

##### ໃນ Python

         myProgressBar = dlg.CreateProgressBar('ProgressBar1', (20, 20, 60, 15), MaxValue = 1000)

## CreateRadioButton

ສ້າງຕົວຄວບຄຸມໃໝ່ປະເພດ RadioButton ໃນໄດອາລັອກປັດຈຸບັນ.

### ໄວຍາກອນ:

svc.CreateRadioButton(ControlName: str, Place: any, MultiLine: bool = False): svc

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

ControlName: ຊື່ຂອງຕົວຄວບຄຸມໃໝ່. ມັນຕ້ອງຍັງບໍ່ມີຢູ່ໃນປັດຈຸບັນ.

Place: ອາດເປັນ…

- Basic Array ຫຼື Python tuple ທີ່ມີ 4 ອົງປະກອບ: (X, Y, ຄວາມກວ້າງ, ຄວາມສູງ)

- ວັດຖຸ com.sun.star.awt.Rectangle [X, Y, ຄວາມກວ້າງ, ຄວາມສູງ]

ອົງປະກອບທັງໝົດສະແດງອອກໃນຫົວໜ່ວຍ Map AppFont.

MultiLine: ເມື່ອເປັນ True (ຄ່າເລີ່ມຕົ້ນ = False), ຄຳອະທິບາຍອາດສະແດງໄດ້ຫຼາຍກວ່າໜຶ່ງບັນທັດ

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

ອິນສະແຕນຊ໌ຂອງບໍລິການ SFDialogs.DialogControl ຫຼື Nothing.

### ຕົວຢ່າງ:

##### ໃນ Basic

         Set myRadioButton = oDlg.CreateRadioButton("RadioButton1", Array(20, 20, 60, 15), MultiLine := True)

##### ໃນ Python

         myRadioButton = dlg.CreateRadioButton('RadioButton1', (20, 20, 60, 15), MultiLine = True)

## CreateScrollBar

ສ້າງຕົວຄວບຄຸມໃໝ່ປະເພດ ScrollBar ໃນໄດອາລັອກປັດຈຸບັນ.

### ໄວຍາກອນ:

svc.CreateScrollBar(ControlName: str, Place, Orientation: str, Border: str = "3D", MinValue: num = 0, MaxValue: num = 100): svc

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

ControlName: ຊື່ຂອງຕົວຄວບຄຸມໃໝ່. ມັນຕ້ອງຍັງບໍ່ມີຢູ່ໃນປັດຈຸບັນ.

Place: ອາດເປັນ…

- Basic Array ຫຼື Python tuple ທີ່ມີ 4 ອົງປະກອບ: (X, Y, ຄວາມກວ້າງ, ຄວາມສູງ)

- ວັດຖຸ com.sun.star.awt.Rectangle [X, Y, ຄວາມກວ້າງ, ຄວາມສູງ]

ອົງປະກອບທັງໝົດສະແດງອອກໃນຫົວໜ່ວຍ Map AppFont.

Orientation: ສຳລັບແນວນອນໃຫ້ໃຊ້ "H" ຫຼື "Horizontal"; ສຳລັບແນວຕັ້ງໃຫ້ໃຊ້ "V" ຫຼື "Vertical".

Border: "3D" (ຄ່າເລີ່ມຕົ້ນ), "FLAT" ຫຼື "NONE"

MinValue: ຄ່າທີ່ນ້ອຍທີ່ສຸດທີ່ສາມາດປ້ອນເຂົ້າໃນຕົວຄວບຄຸມໄດ້. ຄ່າເລີ່ມຕົ້ນ = 0

MaxValue: ຄ່າທີ່ໃຫຍ່ທີ່ສຸດທີ່ສາມາດປ້ອນເຂົ້າໃນຕົວຄວບຄຸມໄດ້. ຄ່າເລີ່ມຕົ້ນ = 100

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

ອິນສະແຕນຊ໌ຂອງບໍລິການ SFDialogs.DialogControl ຫຼື Nothing.

### ຕົວຢ່າງ:

##### ໃນ Basic

         Set myScrollBar = oDlg.CreateScrollBar("ScrollBar1", Array(20, 20, 60, 15), MaxValue := 1000)

##### ໃນ Python

         myScrollBar = dialog.CreateScrollBar('ScrollBar1', (20, 20, 60, 15), MaxValue = 1000)

## CreateTableControl

ສ້າງຕົວຄວບຄຸມໃໝ່ປະເພດ TableControl ໃນໄດອາລັອກປັດຈຸບັນ.

### ໄວຍາກອນ:

svc.CreateTableControl(ControlName: str, Place: any, Border: str = "3D", RowHeaders: bool = True, ColumnHeaders: bool = True, ScrollBars: str = "N", GridLines: bool = False): svc

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

ControlName: ຊື່ຂອງຕົວຄວບຄຸມໃໝ່. ມັນຕ້ອງຍັງບໍ່ມີຢູ່ໃນປັດຈຸບັນ.

Place: ອາດເປັນ…

- Basic Array ຫຼື Python tuple ທີ່ມີ 4 ອົງປະກອບ: (X, Y, ຄວາມກວ້າງ, ຄວາມສູງ)

- ວັດຖຸ com.sun.star.awt.Rectangle [X, Y, ຄວາມກວ້າງ, ຄວາມສູງ]

ອົງປະກອບທັງໝົດສະແດງອອກໃນຫົວໜ່ວຍ Map AppFont.

Border: "3D" (ຄ່າເລີ່ມຕົ້ນ), "FLAT" ຫຼື "NONE"

RowHeaders: ເມື່ອເປັນ True (ຄ່າເລີ່ມຕົ້ນ), ຫົວແຖວຈະຖືກສະແດງ

ColumnHeaders: ເມື່ອເປັນ True (ຄ່າເລີ່ມຕົ້ນ), ຫົວຄໍລຳຈະຖືກສະແດງ

ScrollBars: ຄ່າທີ່ເປັນໄປໄດ້ແມ່ນ: "H" ຫຼື "Horizontal" (ແຖບເລື່ອນແນວນອນ), "V" ຫຼື "Vertical" (ແຖບເລື່ອນແນວຕັ້ງ); "B" ຫຼື "Both" (ທັງສອງແຖບເລື່ອນ); "N" ຫຼື "None" (ຄ່າເລີ່ມຕົ້ນ) ສຳລັບບໍ່ມີແຖບເລື່ອນ. ແຖບເລື່ອນຈະປະກົດຂຶ້ນແບບໄດນາມິກເມື່ອຈຳເປັນ.

GridLines: ເມື່ອເປັນ True (ຄ່າເລີ່ມຕົ້ນ = False), ເສັ້ນແນວນອນ ແລະ ແນວຕັ້ງຈະຖືກຂີດຂັ້ນລະຫວ່າງເຊລຂອງກຣິດ (grid cells)

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

ອິນສະແຕນຊ໌ຂອງບໍລິການ SFDialogs.DialogControl ຫຼື Nothing.

### ຕົວຢ່າງ:

##### ໃນ Basic

         Set myTableControl = oDlg.CreateTableControl("TableControl1", Array(20, 20, 60, 15), ScrollBars := "B")

##### ໃນ Python

         myTableControl = dlg.CreateTableControl('TableControl1', (20, 20, 60, 15), ScrollBars = 'B')

## CreateTabPageContainer

ສ້າງຕົວຄວບຄຸມໃໝ່ປະເພດ TabPageContainer ໃນໄດອາລັອກປັດຈຸບັນ. ແທັບ (Tabs) ຈະຖືກແຍກອອກເປັນຫຼາຍບັນທັດພາຍໃນໄດອາລັອກເມື່ອຈຳເປັນ. ບໍ່ຮອງຮັບ TabPageContainer ຫຼາຍອັນ.

ການສ້າງຕົວຄວບຄຸມ TagePageContainer ຈະມາເປັນອັນສຸດທ້າຍສະເໝີໃນການສ້າງໄດອາລັອກ.

### ໄວຍາກອນ:

svc.CreateTabPageContainer(ControlName: str, Place: any, TabHeaders: str[1..*], Border: str = "3D"): svc

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

ControlName: ຊື່ຂອງຕົວຄວບຄຸມໃໝ່. ມັນຕ້ອງຍັງບໍ່ມີຢູ່ໃນປັດຈຸບັນ.

Place: ອາດເປັນ…

- Basic Array ຫຼື Python tuple ທີ່ມີ 4 ອົງປະກອບ: (X, Y, ຄວາມກວ້າງ, ຄວາມສູງ)

- ວັດຖຸ com.sun.star.awt.Rectangle [X, Y, ຄວາມກວ້າງ, ຄວາມສູງ]

ອົງປະກອບທັງໝົດສະແດງອອກໃນຫົວໜ່ວຍ Map AppFont.

TabHeaders: ອາເຣຂອງ String ທີ່ກຳນົດປ້າຍຊື່ (label) ຂອງແຕ່ລະແທັບ

Border: "3D" (ຄ່າເລີ່ມຕົ້ນ), "FLAT" ຫຼື "NONE"

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

ອິນສະແຕນຊ໌ຂອງບໍລິການ SFDialogs.DialogControl ຫຼື Nothing.

### ຕົວຢ່າງ:

##### ໃນ Basic

         Set myTabPageContainer = oDlg.CreateTabPageContainer("someContainer", Array(20, 20, 60, 15), TabHeaders := Array("Modules", "Dialogs", "Libraries"))

##### ໃນ Python

         myTabPageContainer = dlg.CreateTabPageContainer('theTabs', TabHeaders=('Modules', 'Dialogs', 'Libraries'), place=(20, 20, 60, 15))

## CreateTextField

ສ້າງຕົວຄວບຄຸມໃໝ່ປະເພດ TextField ໃນໄດອາລັອກປັດຈຸບັນ.

### ໄວຍາກອນ:

svc.CreateTextField(ControlName: str, Place: any, Border: str = "3D", MultiLine: bool = False, MaximumLength: num = 0, PasswordCharacter: str = ""): svc

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

ControlName: ຊື່ຂອງຕົວຄວບຄຸມໃໝ່. ມັນຕ້ອງຍັງບໍ່ມີຢູ່ໃນປັດຈຸບັນ.

Place: ອາດເປັນ…

- Basic Array ຫຼື Python tuple ທີ່ມີ 4 ອົງປະກອບ: (X, Y, ຄວາມກວ້າງ, ຄວາມສູງ)

- ວັດຖຸ com.sun.star.awt.Rectangle [X, Y, ຄວາມກວ້າງ, ຄວາມສູງ]

ອົງປະກອບທັງໝົດສະແດງອອກໃນຫົວໜ່ວຍ Map AppFont.

Border: "3D" (ຄ່າເລີ່ມຕົ້ນ), "FLAT" ຫຼື "NONE"

MultiLine: ເມື່ອເປັນ True (ຄ່າເລີ່ມຕົ້ນ = False), ຄຳອະທິບາຍອາດສະແດງໄດ້ຫຼາຍກວ່າໜຶ່ງບັນທັດ

MaximumLength: ຈຳນວນຕົວອັກສອນສູງສຸດ (ຄ່າເລີ່ມຕົ້ນ = 0 ໝາຍເຖິງບໍ່ຈຳກັດ)

PasswordCharacter: ຕົວອັກສອນດຽວທີ່ໃຊ້ສະແດງແທນລະຫັດຜ່ານໃນ password text field (ຄ່າເລີ່ມຕົ້ນ = "")

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

ອິນສະແຕນຊ໌ຂອງບໍລິການ SFDialogs.DialogControl ຫຼື Nothing.

### ຕົວຢ່າງ:

##### ໃນ Basic

    Set myTextField = oDlg.CreateTextField("TextField1", Array(20, 20, 120, 50), MultiLine := True)

##### ໃນ Python

         myTextField = dlg.CreateTextField('TextField1', (20, 20, 120, 50), MultiLine = True)

## CreateTimeField

ສ້າງຕົວຄວບຄຸມໃໝ່ປະເພດ TimeField ໃນໄດອາລັອກປັດຈຸບັນ.

### ໄວຍາກອນ:

svc.CreateTimeField(ControlName: str, Place: any, Border: str = "3D", MinTime: num = 0, MaxTime: num = 24): svc

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

ControlName: ຊື່ຂອງຕົວຄວບຄຸມໃໝ່. ມັນຕ້ອງຍັງບໍ່ມີຢູ່ໃນປັດຈຸບັນ.

Place: ອາດເປັນ…

- Basic Array ຫຼື Python tuple ທີ່ມີ 4 ອົງປະກອບ: (X, Y, ຄວາມກວ້າງ, ຄວາມສູງ)

- ວັດຖຸ com.sun.star.awt.Rectangle [X, Y, ຄວາມກວ້າງ, ຄວາມສູງ]

ອົງປະກອບທັງໝົດສະແດງອອກໃນຫົວໜ່ວຍ Map AppFont.

Border: "3D" (ຄ່າເລີ່ມຕົ້ນ), "FLAT" ຫຼື "NONE"

MinTime: ເວລາທີ່ນ້ອຍທີ່ສຸດທີ່ສາມາດປ້ອນເຂົ້າໃນຕົວຄວບຄຸມໄດ້. ຄ່າເລີ່ມຕົ້ນ = 0

MaxTime: ເວລາທີ່ໃຫຍ່ທີ່ສຸດທີ່ສາມາດປ້ອນເຂົ້າໃນຕົວຄວບຄຸມໄດ້. ຄ່າເລີ່ມຕົ້ນ = 24ຊມ

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

ອິນສະແຕນຊ໌ຂອງບໍລິການ SFDialogs.DialogControl ຫຼື Nothing.

### ຕົວຢ່າງ:

##### ໃນ Basic

         Set myTimeField = oDlg.CreateTimeField("TimeField1", Array(20, 20, 60, 15))

##### ໃນ Python

         myTimeField = dlog.CreateTimeField('TimeField1', (20, 20, 60, 15))

## CreateTreeControl

ສ້າງຕົວຄວບຄຸມໃໝ່ປະເພດ TreeControl ໃນໄດອາລັອກປັດຈຸບັນ.

### ໄວຍາກອນ:

svc.CreateTreeControl(ControlName: str, Place: any, Border = "3D"): svc

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

ControlName: ຊື່ຂອງຕົວຄວບຄຸມໃໝ່. ມັນຕ້ອງຍັງບໍ່ມີຢູ່ໃນປັດຈຸບັນ.

Place: ອາດເປັນ…

- Basic Array ຫຼື Python tuple ທີ່ມີ 4 ອົງປະກອບ: (X, Y, ຄວາມກວ້າງ, ຄວາມສູງ)

- ວັດຖຸ com.sun.star.awt.Rectangle [X, Y, ຄວາມກວ້າງ, ຄວາມສູງ]

ອົງປະກອບທັງໝົດສະແດງອອກໃນຫົວໜ່ວຍ Map AppFont.

Border: "3D" (ຄ່າເລີ່ມຕົ້ນ), "FLAT" ຫຼື "NONE"

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

ອິນສະແຕນຊ໌ຂອງບໍລິການ SFDialogs.DialogControl ຫຼື Nothing.

### ຕົວຢ່າງ:

##### ໃນ Basic

         Set myTreeControl = oDlg.CreateTreeControl("TreeControl1", Array(20, 20, 60, 15))

##### ໃນ Python

         myTreeControl = dlg.CreateTreeControl('TreeControl1', (20, 20, 60, 15))

## EndExecute

ຢຸດການສະແດງຜົນຂອງໄດອາລັອກແບບ modal ແລະ ສົ່ງອາຄິວເມັ້ນຄືນເປັນຄ່າຜົນລັບສຳລັບການເຮັດວຽກຂອງ Execute() ປັດຈຸບັນ.

EndExecute() ມັກຈະລວມຢູ່ໃນການປະມວນຜົນຂອງມາກໂຣທີ່ຖືກກະຕຸ້ນໂດຍເຫດການຂອງໄດອາລັອກ ຫຼື ຕົວຄວບຄຸມ.

### ໄວຍາກອນ:

svc.EndExecute(returnvalue: int)

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

returnvalue: ຄ່າທີ່ສົ່ງຕໍ່ໄປຍັງວິທີ Execute() ທີ່ກຳລັງເຮັດວຽກຢູ່.

### ຕົວຢ່າງ:

##### ໃນ Basic

          Sub OnEvent(poEvent As com.sun.star.lang.EventObject)
              Dim oDlg As Object
              Set oDlg = CreateScriptService("SFDialogs.DialogEvent", poEvent)
              oDlg.EndExecute(ReturnValue := 25)
          End Sub

##### ໃນ Python

         from com.sun.star.lang import EventObject
         def on_event(event: EventObject):
             dlg = CreateScriptService("SFDialogs.DialogEvent", event)
             dlg.EndExecute(25)

ການອ້າງອີງເຖິງ com.sun.star.lang.EventObject ຂ້າງເທິງນັ້ນເປັນພຽງທາງເລືອກ. ຄຳອະທິບາຍດັ່ງກ່າວຊ່ວຍລະບຸສ່ວນຕິດຕໍ່ການຂຽນໂປຣແກຣມແອັບພລິເຄຊັນ (API) ຂອງ LibreOffice.

## Execute

ສະແດງກ່ອງໄດອາລັອກ ແລະ ຖ້າເປັນແບບ modal, ຈະລໍຖ້າໃຫ້ຜູ້ໃຊ້ປິດມັນລົງ. ຄ່າທີ່ສົ່ງຄືນອາດເປັນ:

- 0 : ມີການກົດປຸ່ມ Cancel

- 1 : ມີການກົດປຸ່ມ OK

- ຖ້າບໍ່ດັ່ງນັ້ນ, ໄດອາລັອກຈະຢຸດດ້ວຍຄຳສັ່ງ EndExecute() ທີ່ອອກໂດຍເຫດການຂອງໄດອາລັອກ ຫຼື ຕົວຄວບຄຸມ

ສຳລັບກ່ອງໄດອາລັອກແບບ non-modal, ວິທີນີ້ຈະສົ່ງຄືນຄ່າ 0 ສະເໝີ ແລະ ການເຮັດວຽກຂອງມາກໂຣຈະດຳເນີນຕໍ່ໄປ.

### ໄວຍາກອນ:

svc.Execute(modal: bool = True): int

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

modal: ເປັນ False ເມື່ອເປັນໄດອາລັອກແບບ non-modal. ຄ່າເລີ່ມຕົ້ນ = True.

### ຕົວຢ່າງ:

ໃນຕົວຢ່າງ Basic ນີ້, ໄດອາລັອກ myDialog ຖືກເກັບໄວ້ໃນຫ້ອງສະໝຸດ Standard ຂອງເອກະສານປັດຈຸບັນ.

          Dim oDlg As Object, lReturn As Long
          Set oDlg = CreateScriptService("SFDialogs.Dialog", , , "myDialog")
          lReturn = oDlg.Execute(Modal := False)
          Select Case lReturn
              ' ...
          End Select

ໂຄ້ດ Python ນີ້ສະແດງໄດອາລັອກແບບ modal DlgConvert ຈາກຫ້ອງສະໝຸດ Basic ສ່ວນກາງ Euro.

         dlg = CreateScriptService("SFDialogs.Dialog", 'GlobalScope', 'Euro', "DlgConvert")
         rc = dlg.Execute()
         if rc == dlg.CANCELBUTTON:
             # ...

## GetTextsFromL10N

ແທນທີ່ຂໍ້ຄວາມຄົງທີ່ (fixed text) ທັງໝົດໃນໄດອາລັອກດ້ວຍເວີຊັນທີ່ແປແລ້ວ ອີງຕາມອິນສະແຕນຊ໌ບໍລິການ L10N. ວິທີນີ້ແປຂໍ້ຄວາມຕໍ່ໄປນີ້:

- ຫົວຂໍ້ຂອງໄດອາລັອກ.

- ຄຳອະທິບາຍ (caption) ຂອງປະເພດການຄວບຄຸມຕໍ່ໄປນີ້: Button, CheckBox, FixedLine, FixedText, GroupBox ແລະ RadioButton.

- ຂໍ້ຄວາມຄົງທີ່ໃນ ListBox ແລະ ComboBox.

- ຄຳແນະນຳເຄື່ອງມື (tooltip) ຫຼື ຂໍ້ຄວາມຊ່ວຍເຫຼືອທີ່ສະແດງເມື່ອເມົາສ໌ເລື່ອນຜ່ານການຄວບຄຸມ.

ວິທີນີ້ສົ່ງຄືນຄ່າ True ຖ້າສຳເລັດ.

ເພື່ອສ້າງລາຍຊື່ຂໍ້ຄວາມທີ່ສາມາດແປໄດ້ໃນໄດອາລັອກ, ໃຫ້ໃຊ້ວິທີ AddTextsFromDialog ຈາກບໍລິການ L10N.

### ໄວຍາກອນ:

svc.GetTextsFromL10N(l10n: svc): bool

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

l10n: ອິນສະແຕນຊ໌ບໍລິການ L10N ເຊິ່ງຈະຖືກໃຊ້ເພື່ອດຶງຂໍ້ຄວາມທີ່ແປແລ້ວ.

### ຕົວຢ່າງ:

ຕົວຢ່າງຕໍ່ໄປນີ້ໂຫຼດຂໍ້ຄວາມທີ່ແປແລ້ວ ແລະ ນຳໃຊ້ພວກມັນກັບໄດອາລັອກ "MyDialog".

##### ໃນ Basic

         oDlg = CreateScriptService("Dialog", "GlobalScope", "Standard", "MyDialog")
         myPO = CreateScriptService("L10N", "/home/user/po_files/")
         oDlg.GetTextsFromL10N(myPO)
         oDlg.Execute()

##### ໃນ Python

         dlg = CreateScriptService("Dialog", "GlobalScope", "Standard", "MyDialog")
         myPO = CreateScriptService("L10N", "/home/user/po_files/")
         dlg.GetTextsFromL10N(myPO)
         dlg.Execute()

ອ່ານໜ້າຊ່ວຍເຫຼືອ ບໍລິການ L10N ເພື່ອຮຽນຮູ້ເພີ່ມເຕີມກ່ຽວກັບວິທີຈັດການໄຟລ໌ PO ແລະ POT.

## ImportControl

ນຳເຂົ້າ ແລະ ເຮັດສຳເນົາຕົວຄວບຄຸມທີ່ມີຢູ່ແລ້ວທຸກປະເພດຈາກໄດອາລັອກໜຶ່ງໄປຍັງໄດອາລັອກປັດຈຸບັນ. ຕົວຄວບຄຸມທີ່ຖືກສຳເນົາຈະຍັງຄືເກົ່າ. ຕົວຄວບຄຸມໃໝ່ສາມາດປ່ຽນຊື່ ແລະ ຍ້າຍຕຳແໜ່ງໄດ້. ຕົວຈັດການເຫດການ (Events handlers) ກໍອາດຈະຖືກນຳເຂົ້າໄດ້ຄືກັນ ຖ້າມີຢູ່.

### ໄວຍາກອນ:

svc.ImportControl(SourceDialog: svc, SourceName: str, opt ControlName: str, Page: num = 0, OffsetX: num = 0, OffsetY:num = 0, IncludeOnProperties: bool = False): svc

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

SourceDialog: ອິນສະແຕນຊ໌ຄລາສ SFDialogs.Dialog.

SourceName: ຊື່ຂອງຕົວຄວບຄຸມທີ່ຈະນຳເຂົ້າ.

ControlName: ຊື່ຂອງຕົວຄວບຄຸມໃໝ່. ມັນຕ້ອງຍັງບໍ່ມີຢູ່ໃນປັດຈຸບັນ. ຄ່າເລີ່ມຕົ້ນແມ່ນ SourceName

Page: ໝາຍເລກໜ້າຂອງຕົວຄວບຄຸມໃໝ່. ຄ່າເລີ່ມຕົ້ນ = 0

OffsetX, OffsetY: ຈຳນວນພິກເຊວທີ່ຈະເພີ່ມໃສ່ພິກັດຂອງຕົວຄວບຄຸມຕົ້ນທາງ ໃນຫົວໜ່ວຍ "Map AppFont". ຄ່າເລີ່ມຕົ້ນ = 0, ສາມາດເປັນຄ່າລົບໄດ້.

IncludeOnProperties: ລວມເອົາຄຸນສົມບັດເຫດການ On.... ຄ່າເລີ່ມຕົ້ນ = False.

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

ອິນສະແຕນຊ໌ຂອງບໍລິການ SFDialogs.DialogControl ຫຼື Nothing.

### ຕົວຢ່າງ:

##### ໃນ Basic

         Set mCtrl = oDlg.ImportControl(srceDlg, "someCtrlName")

##### ໃນ Python

         dlg.ImportControl(srceDlg, 'aCtrlName', includeOnProperties=true)

## OrderTabs

ຕັ້ງຄ່າດັດຊະນີການແທັບ (tabulation index) ຂອງຊຸດຕົວຄວບຄຸມ. ລຳດັບຂອງຕົວຄວບຄຸມຈະຖືກສົ່ງເປັນອາເຣຂອງຊື່ຕົວຄວບຄຸມ ຕັ້ງແຕ່ຕົວທຳອິດຫາຕົວສຸດທ້າຍ.

ຕົວຄວບຄຸມທີ່ມີດັດຊະນີ >= 1 ຈະບໍ່ສາມາດເຂົ້າເຖິງໄດ້ດ້ວຍປຸ່ມ TAB ຖ້າ:
- ພວກມັນຖືກຕັດອອກຈາກລາຍຊື່ທີ່ໃຫ້ມາ
- ປະເພດຂອງພວກມັນແມ່ນ FixedLine, GroupBox ຫຼື ProgressBar
- ພວກມັນຖືກປິດການໃຊ້ງານ

### ໄວຍາກອນ:

svc.TabsList(TabsList: num, Start: num = 1, Increment: num = 1): bool

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

TabsList: ອາເຣຂອງຊື່ຕົວຄວບຄຸມທີ່ຖືກຕ້ອງຕາມລຳດັບການແທັບ

ເລີ່ມຕົ້ນ: ດັດຊະນີແທັບ (tab index) ທີ່ຈະກຳນົດໃຫ້ກັບຕົວຄວບຄຸມທີ 1 ໃນລາຍການ. ຄ່າເລີ່ມຕົ້ນ = 1

ຄ່າເພີ່ມຂຶ້ນ: ຄວາມແຕກຕ່າງລະຫວ່າງ 2 ດັດຊະນີແທັບທີ່ຖັດກັນ. ຄ່າເລີ່ມຕົ້ນ = 1

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

ສົ່ງຄືນ True ເມື່ອສຳເລັດ.

### ຕົວຢ່າງ:

##### ໃນ Basic

         oDlg.OrderTabs(Array("myListBox", "myTextField", "myNumericField"), Start := 10)

##### ໃນ Python

         dlg.OrderTabs(('myListBox', 'myTextField', 'myNumericField'), Start = 10)

## Resize

ຍ້າຍມຸມຊ້າຍເທິງຂອງໄດອາລັອກໄປຫາພິກັດໃໝ່ ແລະ/ຫຼື ປັບປ່ຽນຂະໜາດຂອງມັນ. ໄລຍະຫ່າງທັງໝົດຈະສະແດງເປັນຫົວໜ່ວຍ AppFont. ຖ້າບໍ່ມີອາຄິວເມັນ, ວິທີການນີ້ຈະຕັ້ງຄ່າຂະໜາດເລີ່ມຕົ້ນໃໝ່. ສົ່ງຄືນ True ຖ້າການປ່ຽນຂະໜາດສຳເລັດ.

### ໄວຍາກອນ:

svc.Resize(opt Left: num, opt Top: num, opt Width: num, opt Height: num): bool

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

ຊ້າຍ: ໄລຍະຫ່າງຕາມແນວນອນຈາກມຸມຊ້າຍເທິງ

ເທິງ: ໄລຍະຫ່າງຕາມແນວຕັ້ງຈາກມຸມຊ້າຍເທິງ

ຄວາມກວ້າງ: ຄວາມກວ້າງຂອງຮູບສີ່ແຈສາກທີ່ບັນຈຸໄດອາລັອກ

ຄວາມສູງ: ຄວາມສູງຂອງຮູບສີ່ແຈສາກທີ່ບັນຈຸໄດອາລັອກ

ອາຄິວເມັນທີ່ຂາດໄປຈະບໍ່ຖືກປ່ຽນແປງ

### ຕົວຢ່າງ:

##### ໃນ Basic

         oDlg.Resize(1000, 2000, Height := 6000) ' ຄວາມກວ້າງບໍ່ຖືກປ່ຽນແປງ

##### ໃນ Python

         dlg.Resize(1000, 2000, Height = 6000)  # ຄວາມກວ້າງບໍ່ຖືກປ່ຽນແປງ

## SetPageManager

ກຳນົດວ່າຕົວຄວບຄຸມໃດໃນໄດອາລັອກທີ່ມີໜ້າທີ່ໃນການສະຫຼັບໜ້າ, ເພື່ອໃຫ້ງ່າຍຂຶ້ນໃນການຈັດການຄຸນສົມບັດ Page ຂອງໄດອາລັອກ ແລະ ຕົວຄວບຄຸມຂອງມັນ.

ໄດອາລັອກອາດຈະມີຫຼາຍໜ້າ ແລະ ໜ້າທີ່ກຳລັງສະແດງຢູ່ໃນປັດຈຸບັນແມ່ນຖືກກຳນົດໂດຍຄຸນສົມບັດ Page ຂອງໄດອາລັອກ. ຖ້າຄຸນສົມບັດ Page ບໍ່ຖືກປ່ຽນແປງ, ໜ້າເລີ່ມຕົ້ນທີ່ສະແດງຈະເທົ່າກັບ 0 (ສູນ), ຊຶ່ງໝາຍຄວາມວ່າບໍ່ມີການກຳນົດໜ້າໃດໜຶ່ງໂດຍສະເພາະ ແລະ ຕົວຄວບຄຸມທີ່ເຫັນໄດ້ທັງໝົດຈະຖືກສະແດງໂດຍບໍ່ສົນວ່າຄຸນສົມບັດ Page ຂອງພວກມັນເອງຖືກຕັ້ງໄວ້ເປັນຄ່າໃດ.

ເມື່ອຄຸນສົມບັດ Page ຂອງໄດອາລັອກຖືກປ່ຽນເປັນຄ່າອື່ນ ເຊັ່ນ 1, 2, 3 ແລະ ຕໍ່ໆໄປ, ຈະມີພຽງແຕ່ຕົວຄວບຄຸມທີ່ມີຄຸນສົມບັດ Page ກົງກັບໜ້າຂອງໄດອາລັອກປັດຈຸບັນເທົ່ານັ້ນທີ່ຈະຖືກສະແດງ.

ໂດຍການໃຊ້ວິທີການ SetPageManager, ທ່ານສາມາດກຳນົດຕົວຈັດການໜ້າໄດ້ສີ່ປະເພດ:

- ກ່ອງລາຍການ ຫຼື ກ່ອງຄອມໂບ: ໃນກໍລະນີນີ້, ແຕ່ລະລາຍການໃນກ່ອງລາຍການ ຫຼື ກ່ອງຄອມໂບຈະກົງກັບແຕ່ລະໜ້າ. ລາຍການທຳອິດໝາຍເຖິງ ໜ້າ 1, ລາຍການທີສອງໝາຍເຖິງ ໜ້າ 2 ແລະ ຕໍ່ໆໄປ.

- ກຸ່ມປຸ່ມຕົວເລືອກ (Radio buttons): ກຳນົດກຸ່ມຂອງປຸ່ມຕົວເລືອກທີ່ຈະຄວບຄຸມວ່າໜ້າໃດຈະສະແດງໃຫ້ເຫັນ.

- ລຳດັບຂອງປຸ່ມ: ກຳນົດຊຸດຂອງປຸ່ມ, ໂດຍແຕ່ລະປຸ່ມຈະກົງກັບໜ້າຂອງໄດອາລັອກ. ສາມາດໃຊ້ເພື່ອຈຳລອງສ່ວນຕິດຕໍ່ແບບແທັບ (tabbed interface) ໂດຍການວາງປຸ່ມລຽງຂ້າງກັນໃນໄດອາລັອກ.

- ປຸ່ມ ກ່ອນໜ້າ/ຖັດໄປ: ກຳນົດວ່າປຸ່ມໃດໃນໄດອາລັອກທີ່ຈະໃຊ້ເພື່ອເລື່ອນໄປຫາໜ້າ ກ່ອນໜ້າ/ຖັດໄປ ໃນໄດອາລັອກ.

ທ່ານສາມາດໃຊ້ກົນໄກການຈັດການໜ້າຫຼາຍກວ່າໜຶ່ງຢ່າງພ້ອມກັນໄດ້.

ວິທີການນີ້ຄວນຖືກເອີ້ນພຽງແຕ່ຄັ້ງດຽວກ່ອນທີ່ຈະເອີ້ນວິທີການ Execute. ການເອີ້ນຄັ້ງຕໍ່ໆໄປຈະຖືກລະເລີຍ.

ຖ້າສຳເລັດ ວິທີການນີ້ຈະສົ່ງຄືນ True.

### ໄວຍາກອນ:

svc.SetPageManager(pilotcontrols: str = "", tabcontrols: str = "", wizardcontrols: str = "", opt lastpage: int): bool

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

pilotcontrols: ລາຍການຊື່ຕົວຄວບຄຸມ ListBox, ComboBox ຫຼື RadioButton ທີ່ຂັ້ນດ້ວຍຈຸດ ເພື່ອໃຊ້ເປັນຕົວຈັດການໜ້າ. ສຳລັບຕົວຄວບຄຸມ RadioButton, ໃຫ້ລະບຸຊື່ຂອງຕົວຄວບຄຸມທຳອິດໃນກຸ່ມທີ່ຈະໃຊ້.

tabcontrols: ລາຍການຊື່ປຸ່ມທີ່ຂັ້ນດ້ວຍຈຸດທີ່ຈະໃຊ້ເປັນຕົວຈັດການໜ້າ. ລຳດັບທີ່ລະບຸໃນອາຄິວເມັນນີ້ຈະກົງກັບໝາຍເລກໜ້າທີ່ພວກມັນກ່ຽວຂ້ອງ.

wizardcontrols: ລາຍການຊື່ປຸ່ມສອງປຸ່ມທີ່ຂັ້ນດ້ວຍຈຸດທີ່ຈະໃຊ້ເປັນປຸ່ມ ກ່ອນໜ້າ/ຖັດໄປ.

lastpage: ໝາຍເລກຂອງໜ້າສຸດທ້າຍທີ່ມີຢູ່. ແນະນຳໃຫ້ລະບຸຄ່ານີ້ເມື່ອໃຊ້ຕົວຈັດການໜ້າແບບ ກ່ອນໜ້າ/ຖັດໄປ.

### ຕົວຢ່າງ:

ພິຈາລະນາໄດອາລັອກທີ່ມີສາມໜ້າ. ໄດອາລັອກມີຕົວຄວບຄຸມ ListBox ຊື່ "aPageList" ທີ່ຈະໃຊ້ເພື່ອຄວບຄຸມໜ້າທີ່ສະແດງ. ນອກຈາກນັ້ນ, ຍັງມີສອງປຸ່ມຊື່ "btnPrevious" ແລະ "btnNext" ທີ່ຈະໃຊ້ເປັນປຸ່ມ ກ່ອນໜ້າ/ຖັດໄປ ໃນໄດອາລັອກ.

##### ໃນ Basic

        oDlg.SetPageManager(PilotControls := "aPageList", _
                               WizardControls := "btnPrevious,btnNext", _
                               LastPage := 3)
        oDlg.Execute()

##### ໃນ Python

        dlg.SetPageManager(pilotcontrols="aPageList",
                           wizardcontrols="btnPrevious,btnNext",
                           lastpage=3)
        dlg.Execute()

## Terminate

ຢຸດການເຮັດວຽກຂອງບໍລິການ Dialog ສຳລັບອິນສະແຕນຊ໌ (instance) ປັດຈຸບັນ. ສົ່ງຄືນ True ຖ້າການຢຸດເຮັດວຽກສຳເລັດ.

### ໄວຍາກອນ:

svc.Terminate(): bool

### ຕົວຢ່າງ:

ຕົວຢ່າງ Basic ແລະ Python ລຸ່ມນີ້ຈະເປີດໄດອາລັອກແບບ non-modal DlgConsole ແລະ dlgTrace. ພວກມັນຖືກເກັບໄວ້ໃນຄັງສຳນວນ (shared libraries) ScriptForge ແລະ Access2Base ຕາມລຳດັບ. ປຸ່ມປິດໄດອາລັອກຖືກປິດໃຊ້ງານ ແລະ ມີການຢຸດການເຮັດວຽກຢ່າງຊັດເຈນໃນຕອນທ້າຍຂອງຂະບວນການ.

ໃນຕົວຢ່າງນີ້ ປຸ່ມໃນ DlgConsole ຈະຖືກໃຊ້ແທນການປິດໜ້າຕ່າງທີ່ຖືກຫ້າມໄວ້:

##### ໃນ Basic

         oDlg = CreateScriptService("SFDialogs.Dialog","GlobalScope","ScriptForge","DlgConsole")
         oDlg.Execute(modal:=False)
         Wait 5000
         oDlg.Terminate()

##### ໃນ Python

         from time import sleep
         dlg = CreateScriptService('SFDialogs.Dialog',"GlobalScope",'Access2Base',"dlgTrace")
         dlg.Execute(modal=False)
         sleep 5
         dlg.Terminate()

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

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

ບໍລິການ SFDialogs.DialogControl

ບໍລິການ ScriptForge.UI

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