ເນື້ອໃນ

# ບໍລິການ ScriptForge.UI

ບໍລິການ UI (User Interface) ຊ່ວຍໃຫ້ການລະບຸຕົວຕົນ ແລະ ການຈັດການໜ້າຕ່າງຕ່າງໆ ທີ່ປະກອບເປັນແອັບພລິເຄຊັນ LibreOfficeDev ທັງໝົດນັ້ນງ່າຍຂຶ້ນ:

- ການເລືອກໜ້າຕ່າງ

- ການຍ້າຍ ແລະ ການປ່ຽນຂະໜາດໜ້າຕ່າງ

- ການຕັ້ງຄ່າແຖບສະຖານະ

- ການສະແດງແຖບຄວາມຄືບໜ້າແບບລອຍ

- ການສ້າງໜ້າຕ່າງໃໝ່

- ການເຂົ້າເຖິງ "ເອກະສານ" ພາຍໃນ

ບໍລິການ UI ແມ່ນຈຸດເລີ່ມຕົ້ນໃນການເປີດ, ສ້າງ ຫຼື ເຂົ້າເຖິງເນື້ອໃນຂອງເອກະສານໃໝ່ ຫຼື ທີ່ມີຢູ່ແລ້ວຈາກສະຄຣິບຂອງຜູ້ໃຊ້.

## ຄຳນິຍາມ

### WindowName

ໜ້າຕ່າງສາມາດຖືກລະບຸໄດ້ດ້ວຍຫຼາຍວິທີ:

- ເສັ້ນທາງເຕັມ (full path) ແລະ ຊື່ໄຟລ໌

- ສ່ວນປະກອບສຸດທ້າຍຂອງຊື່ໄຟລ໌ເຕັມ ຫຼື ແມ່ນແຕ່ສ່ວນປະກອບສຸດທ້າຍໂດຍບໍ່ມີນາມສະກຸນ

- ຊື່ຫົວຂໍ້ຂອງໜ້າຕ່າງ

- ສຳລັບເອກະສານໃໝ່, ເຊັ່ນ "Untitled 1"

- ໜຶ່ງໃນໜ້າຕ່າງພິເສດ "BASICIDE" ແລະ "WELCOMESCREEN"

ຊື່ໜ້າຕ່າງມີຄວາມອ່ອນໄຫວຕໍ່ຕົວອັກສອນໃຫຍ່-ນ້ອຍ (case-sensitive).

### ອັອບເຈັກເອກະສານ

ວິທີການ CreateDocument, CreateBaseDocument, GetDocument, OpenBaseDocument ແລະ OpenDocument ທີ່ອະທິບາຍຂ້າງລຸ່ມນີ້ ຈະສ້າງອັອບເຈັກເອກະສານ. ເມື່ອໜ້າຕ່າງໃດໜຶ່ງປະກອບມີເອກະສານ, ອິນສະແຕນຊ໌ຂອງຄລາດ Document ຈະເປັນຕົວແທນຂອງເອກະສານນັ້ນ. ຕົວຢ່າງທີ່ກົງກັນຂ້າມຄື Basic IDE ບໍ່ແມ່ນເອກະສານ ແຕ່ແມ່ນໜ້າຕ່າງໃນຄຳນິຍາມຂອງພວກເຮົາ. ນອກຈາກນັ້ນ, ເອກະສານຍັງມີປະເພດເຊັ່ນ: Calc, Impress, Writer, ...

ຄຸນສົມບັດ ແລະ ວິທີການສະເພາະທີ່ໃຊ້ກັບເອກະສານໄດ້ນັ້ນ ຖືກນຳໃຊ້ (implemented) ໃນຄລາດເອກະສານ.

ການນຳໃຊ້ຄລາດອັອບເຈັກເອກະສານແມ່ນເຮັດຢູ່ໃນໄລບຣາລີ SFDocuments ທີ່ກ່ຽວຂ້ອງ. ເບິ່ງລາຍລະອຽດໄດ້ທີ່ບໍລິການ "Document" ຂອງມັນ.

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

ກ່ອນທີ່ຈະໃຊ້ບໍລິການ UI, ໄລບຣາລີ ScriptForge ຈະຕ້ອງຖືກໂຫຼດ ຫຼື ນຳເຂົ້າກ່ອນ:

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

##### ໃນ Basic

        Dim ui As Variant
        GlobalScope.BasicLibraries.LoadLibrary("ScriptForge")
        Set ui = CreateScriptService("UI")

##### ໃນ Python

        from scriptforge import CreateScriptService
        ui = CreateScriptService("UI")

## ຄຸນສົມບັດ

ຊື່ | ອ່ານຢ່າງດຽວ | ປະເພດ | ຄຳອະທິບາຍ
--- | --- | --- | ---
ActiveWindow | ແມ່ນ | String | ຊື່ WindowName ທີ່ຖືກຕ້ອງ ແລະ ບໍ່ຊ້ຳກັນສຳລັບໜ້າຕ່າງທີ່ກຳລັງໃຊ້ງານຢູ່ໃນປັດຈຸບັນ. ເມື່ອບໍ່ສາມາດລະບຸໜ້າຕ່າງໄດ້, ມັນຈະສົ່ງຄືນຂໍ້ຄວາມທີ່ວ່າງເປົ່າ.
Height | ແມ່ນ | Integer | ສົ່ງຄືນຄວາມສູງຂອງໜ້າຕ່າງທີ່ກຳລັງໃຊ້ງານຢູ່, ເປັນພິກເຊວ.
Width | ແມ່ນ | Integer | ສົ່ງຄືນຄວາມກວ້າງຂອງໜ້າຕ່າງທີ່ກຳລັງໃຊ້ງານຢູ່, ເປັນພິກເຊວ.
X | ແມ່ນ | Integer | ສົ່ງຄືນຄ່າພິກັດ X ຂອງໜ້າຕ່າງທີ່ກຳລັງໃຊ້ງານຢູ່, ເຊິ່ງແມ່ນໄລຍະຫ່າງຈາກຂອບຊ້າຍຂອງໜ້າຈໍ, ເປັນພິກເຊວ.
Y | ແມ່ນ | Integer | ສົ່ງຄືນຄ່າພິກັດ Y ຂອງໜ້າຕ່າງທີ່ກຳລັງໃຊ້ງານຢູ່, ເຊິ່ງແມ່ນໄລຍະຫ່າງຈາກຂອບເທິງຂອງໜ້າຈໍ, ເປັນພິກເຊວ. ຄ່ານີ້ບໍ່ໄດ້ນັບລວມສ່ວນຕົບແຕ່ງໜ້າຕ່າງທີ່ເພີ່ມໂດຍລະບົບປະຕິບັດການຂອງທ່ານ, ດັ່ງນັ້ນ ເຖິງແມ່ນວ່າໜ້າຕ່າງຈະຖືກຂະຫຍາຍເຕັມຈໍ ຄ່ານີ້ກໍອາດຈະບໍ່ແມ່ນສູນ.

## ຄ່າຄົງທີ່

ຊື່ | ຄ່າ | ຄຳອະທິບາຍ
--- | --- | ---
MACROEXECALWAYS | 2 | ໃຫ້ມາໂຄຣເຮັດວຽກສະເໝີ
MACROEXECNEVER | 1 | ບໍ່ໃຫ້ມາໂຄຣເຮັດວຽກເລີຍ
MACROEXECNORMAL | 0 | ການເຮັດວຽກຂອງມາໂຄຣແມ່ນຂຶ້ນກັບການຕັ້ງຄ່າຂອງຜູ້ໃຊ້

### ຕົວຢ່າງ:

ຕົວຢ່າງດ້ານລຸ່ມນີ້ຈະສະແດງ MsgBox ພ້ອມກັບຊື່ຂອງເອກະສານທັງໝົດທີ່ເປີດຢູ່ໃນປັດຈຸບັນ.

##### ໃນ Basic

         Dim openDocs As Object, strDocs As String
         Set openDocs = ui.Documents()
         strDocs = openDocs(0)
         For i = 1 To UBound(openDocs)
             strDocs = strDocs & Chr(10) & openDocs(i)
         Next i
         MsgBox strDocs

##### ໃນ Python

         ui = CreateScriptService("UI")
         bas = CreateScriptService("Basic")
         openDocs = ui.Documents()
         strDocs = "\n".join(openDocs)
         bas.MsgBox(strDocs)

ລາຍຊື່ວິທີການໃນບໍລິການ UI
Activate CreateBaseDocument CreateDocument (*) Documents GetDocument | Maximize Minimize OpenBaseDocument OpenDocument (*) Resize | RunCommand SetStatusBar (*) ShowProgressBar WindowExists

ໝາຍເຫດ: ຂໍ້ຍົກເວັ້ນຄື ວິທີການທີ່ມີເຄື່ອງໝາຍ (*) ແມ່ນ ບໍ່ສາມາດໃຊ້ໄດ້ກັບເອກະສານ Base.

## Activate

ກຳນົດໃຫ້ໜ້າຕ່າງທີ່ລະບຸເປັນໜ້າຕ່າງທີ່ກຳລັງເຮັດວຽກ (active). ວິທີການນີ້ຈະສົ່ງຄືນຄ່າ True ຖ້າພົບໜ້າຕ່າງທີ່ລະບຸ ແລະ ສາມາດເປີດໃຊ້ງານໄດ້. ຈະບໍ່ມີການປ່ຽນແປງໃດໆໃນສ່ວນຕິດຕໍ່ຜູ້ໃຊ້ ຖ້າບໍ່ມີໜ້າຕ່າງທີ່ກົງກັບການເລືອກ.

### ໄວຍາກອນ:

svc.Activate(windowname: str): bool

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

windowname: ເບິ່ງຄຳນິຍາມຂ້າງເທິງ.

### ຕົວຢ່າງ:

##### ໃນ Basic

          ui.Activate("C:\Documents\My file.odt")

##### ໃນ Python

          ui.Activate(r"C:\Documents\My file.odt")

## CreateBaseDocument

ສ້າງ ແລະ ຈັດເກັບເອກະສານ LibreOfficeDev Base ໃໝ່ ໂດຍການຝັງຖານຂໍ້ມູນເປົ່າຫວ່າງຕາມປະເພດທີ່ກຳນົດ, ຫຼື ເຊື່ອມຕໍ່ກັບໄຟລ໌ຖານຂໍ້ມູນທີ່ມີຢູ່ແລ້ວ. ວິທີນີ້ຈະສົ່ງຄືນອິນສະແຕນຊ໌ຂອງບໍລິການ Base.

### ໄວຍາກອນ:

svc.CreateBaseDocument(filename: str, embeddeddatabase: str = 'HSQLDB', registrationname: str = '', opt datafilename: str, opt calcfilename: str): svc

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

filename : ລະບຸໄຟລ໌ທີ່ຈະສ້າງ. ມັນຕ້ອງເປັນໄປຕາມຮູບແບບ SF_FileSystem.FileNaming. ຖ້າມີໄຟລ໌ຢູ່ແລ້ວ, ມັນຈະຖືກຂຽນທັບໂດຍບໍ່ມີການແຈ້ງເຕືອນ.

ຖານຂໍ້ມູນທີ່ຝັງໄວ້ : ອາດຈະເປັນ "HSQLDB" (ຄ່າເລີ່ມຕົ້ນ), "FIREBIRD", "FIREBIRD_EXTERNAL" ຫຼື "CALC".

registrationname : ຊື່ທີ່ໃຊ້ເພື່ອບັນທຶກຖານຂໍ້ມູນໃໝ່ໃນທະບຽນຖານຂໍ້ມູນ. ເມື່ອກຳນົດເປັນ "" (ຄ່າເລີ່ມຕົ້ນ), ຈະບໍ່ມີການລົງທະບຽນ. ຖ້າມີຊື່ຢູ່ແລ້ວ, ມັນຈະຖືກຂຽນທັບໂດຍບໍ່ມີການແຈ້ງເຕືອນ.

ຊື່ໄຟລ໌ຂໍ້ມູນ : ສະເພາະເມື່ອ embeddeddatabase = "CALC" ຫຼື "FIREBIRD_EXTERNAL", datafilename ໝາຍເຖິງໄຟລ໌ທີ່ມີຕາຕະລາງໃນຮູບແບບແຜ່ນງານ Calc ຫຼື ເປັນຕາຕະລາງຖານຂໍ້ມູນ. ໄຟລ໌ດັ່ງກ່າວຕ້ອງມີຢູ່ແລ້ວ ບໍ່ດັ່ງນັ້ນຈະເກີດຂໍ້ຜິດພາດຂຶ້ນ.

ຊື່ໄຟລ໌ Calc : ສະເພາະເມື່ອ embeddeddatabase = "CALC", calcfilename ໝາຍເຖິງໄຟລ໌ທີ່ມີຕາຕະລາງໃນຮູບແບບແຜ່ນງານ Calc. ໄຟລ໌ດັ່ງກ່າວຕ້ອງມີຢູ່ແລ້ວ ບໍ່ດັ່ງນັ້ນຈະເກີດຂໍ້ຜິດພາດຂຶ້ນ. ພາມິເຕີນີ້ແມ່ນຖືກຍົກເລີກການໃຊ້ງານແລ້ວ.

### ຕົວຢ່າງ:

##### ໃນ Basic

          Dim myBase As Object, myCalcBase As Object
          Set myBase = ui.CreateBaseDocument("C:\Databases\MyBaseFile.odb", "FIREBIRD")
          Set myCalcBase = ui.CreateBaseDocument("C:\Databases\MyCalcBaseFile.odb", _
              "CALC", , "C:\Databases\MyCalcFile.ods")

##### ໃນ Python

         myBase = ui.CreateBaseDocument(r"C:\Databases\MyBaseFile.odb", "FIREBIRD")
         myCalcBase = ui.CreateBaseDocument(r"C:\Databases\MyCalcBaseFile.odb", \
             "CALC", datafilename = r"C:\Databases\MyCalcFile.ods")

## CreateDocument (*)

ສ້າງເອກະສານ LibreOfficeDev ໃໝ່ຕາມປະເພດທີ່ລະບຸ ຫຼື ອີງຕາມແມ່ແບບ (template) ທີ່ກຳນົດ. ວິທີການນີ້ຈະສົ່ງຄືນອິນສະແຕນຊ໌ຂອງຄລາດເອກະສານ ຫຼື ຄລາດຍ່ອຍຂອງມັນ (ເຊັ່ນ Calc, Writer).

### ໄວຍາກອນ:

svc.CreateDocument(documenttype: str = '', templatefile: str = '', hidden: bool = False): svc

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

documenttype : "Calc", "Writer", ແລະ ອື່ນໆ. ຖ້າບໍ່ມີການລະບຸ, ຈະຕ້ອງລະບຸອາກິວເມນ templatefile ແທນ.

templatefile : ຊື່ໄຟລ໌ເຕັມ (FileName) ຂອງແມ່ແບບທີ່ຈະໃຊ້ສ້າງເອກະສານໃໝ່. ຖ້າໄຟລ໌ບໍ່ມີຢູ່, ອາກິວເມນນີ້ຈະຖືກລະເລີຍ. ບໍລິການ FileSystem ມີຄຸນສົມບັດ TemplatesFolder ແລະ UserTemplatesFolder ເພື່ອຊ່ວຍໃນການສ້າງອາກິວເມນນີ້.

hidden: ຖ້າເປັນ True, ຈະເປີດເອກະສານໃໝ່ໃນພື້ນຫຼັງ (ຄ່າເລີ່ມຕົ້ນ = False). ຄວນໃຊ້ດ້ວຍຄວາມລະມັດລະວັງ: ການເປີດໃຊ້ງານ ຫຼື ການປິດໃນພາຍຫຼັງສາມາດເຮັດໄດ້ຜ່ານການຂຽນໂປຣແກຣມເທົ່ານັ້ນ.

### ຕົວຢ່າງ:

ໃນທັງສອງຕົວຢ່າງດ້ານລຸ່ມນີ້, ການເອີ້ນໃຊ້ວິທີການ CreateDocument ຄັ້ງທຳອິດຈະສ້າງເອກະສານ Calc ທີ່ວ່າງເປົ່າ, ໃນຂະນະທີ່ຄັ້ງທີສອງຈະສ້າງເອກະສານຈາກໄຟລ໌ແມ່ແບບ.

##### ໃນ Basic

          Dim myDoc1 As Object, myDoc2 As Object, FSO As Object
          Set myDoc1 = ui.CreateDocument("Calc")
          Set FSO = CreateScriptService("FileSystem")
          Set myDoc2 = ui.CreateDocument(, FSO.BuildPath(FSO.TemplatesFolder, "personal/CV.ott"))

##### ໃນ Python

         myDoc1 = ui.CreateDocument("Calc")
         fs = CreateScriptService("FileSystem")
         myDoc2 = ui.CreateDocument(templatefile = fs.BuildPath(fs.TemplatesFolder, "personal/CV.ott"))

## Documents

ລາຍຊື່ຂອງເອກະສານທີ່ເປີດຢູ່ໃນປັດຈຸບັນ. ໜ້າຕ່າງພິເສດຈະຖືກລະເລີຍ. ລາຍຊື່ນີ້ປະກອບດ້ວຍອາເຣໜຶ່ງມິຕິທີ່ເລີ່ມຈາກສູນ (zero-based), ເຊິ່ງອາດເປັນຊື່ໄຟລ໌ (ໂດຍໃຊ້ຮູບແບບ ScriptForge.FileSystem.FileNaming) ຫຼື ເປັນຫົວຂໍ້ໜ້າຕ່າງສຳລັບເອກະສານທີ່ຍັງບໍ່ໄດ້ບັນທຶກ.

### ໄວຍາກອນ:

svc.Documents(): str[1..*]

### ຕົວຢ່າງ:

ໃນທັງສອງຕົວຢ່າງດ້ານລຸ່ມນີ້, ວິທີການນີ້ອາດຈະສົ່ງຄືນອາເຣທີ່ວ່າງເປົ່າ ຖ້າບໍ່ມີເອກະສານໃດໆເປີດຢູ່.

##### ໃນ Basic

          Dim docList As Variant
          docList = ui.Documents

##### ໃນ Python

         docList = ui.Documents()

## GetDocument

ສົ່ງຄືນອິນສະແຕນຊ໌ຂອງຄລາດ Document ຫຼື ຄລາດຍ່ອຍຂອງມັນ (Calc, Writer, Base, FormDocument) ທີ່ອ້າງອີງເຖິງໜ້າຕ່າງທີ່ລະບຸ ຫຼື ເອກະສານທີ່ກຳລັງໃຊ້ງານຢູ່.

### ໄວຍາກອນ:

svc.GetDocument(windowname: str = ''): svc

svc.GetDocument(windowname: uno): svc

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

windowname: ເບິ່ງຄຳນິຍາມ ຂ້າງເທິງ. ຖ້າບໍ່ມີການລະບຸອາກິວເມນນີ້, ຈະໃຊ້ໜ້າຕ່າງທີ່ກຳລັງເຮັດວຽກຢູ່. ຍັງຮອງຮັບອັອບເຈັກ UNO ປະເພດ com.sun.star.lang.XComponent ຫຼື com.sun.star.comp.dba.ODatabaseDocument ນຳອີກ. ດັ່ງນັ້ນ, ການສົ່ງ ThisComponent ຫຼື ThisDatabaseDocument ເປັນອາກິວເມນ ຈະສ້າງບໍລິການ SFDocuments.Document, Base ຫຼື Calc ໃໝ່.

### ຕົວຢ່າງ:

##### ໃນ Basic

          Dim myDoc As Object
          Set myDoc = ui.GetDocument("C:\Documents\My file.odt")
          Set myBase = ui.GetDocument(ThisDatabaseDocument)

##### ໃນ Python

         from scriptforge import CreateScriptService
         bas = CreateScriptService("Basic")
         myDoc = ui.GetDocument(r"C:\Documents\My file.odt")
         myDoc = ui.GetDocument(bas.ThisComponent)

ເພື່ອເຂົ້າເຖິງຊື່ຂອງໜ້າຕ່າງທີ່ກຳລັງໃຊ້ງານຢູ່ໃນປັດຈຸບັນ, ໃຫ້ອ້າງອີງເຖິງຄຸນສົມບັດ ActiveWindow.

## Maximize

ຂະຫຍາຍໜ້າຕ່າງທີ່ກຳລັງໃຊ້ງານຢູ່ ຫຼື ໜ້າຕ່າງທີ່ລະບຸໃຫ້ໃຫຍ່ສຸດ.

### ໄວຍາກອນ:

svc.Maximize(windowname: str)

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

windowname: ເບິ່ງຄຳນິຍາມ ຂ້າງເທິງ. ຖ້າອາຄິວເມນນີ້ບໍ່ມີ, ປ່ອງຢ້ຽມທີ່ກຳລັງເຮັດວຽກຈະຖືກຂະຫຍາຍໃຫຍ່ສຸດ.

### ຕົວຢ່າງ:

##### ໃນ Basic

          ui.Maximize("Untitled 1")

##### ໃນ Python

         ui.Maximize("Untitled 1")

## Minimize

ຫຍໍ້ປ່ອງຢ້ຽມທີ່ກຳລັງເຮັດວຽກ ຫຼື ປ່ອງຢ້ຽມທີ່ກຳນົດໃຫ້ລົງນ້ອຍສຸດ.

### ໄວຍາກອນ:

svc.Minimize(windowname: str)

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

windowname: ເບິ່ງຄຳນິຍາມ ຂ້າງເທິງ. ຖ້າອາຄິວເມນນີ້ບໍ່ມີ, ປ່ອງຢ້ຽມທີ່ກຳລັງເຮັດວຽກຈະຖືກຫຍໍ້ລົງນ້ອຍສຸດ.

### ຕົວຢ່າງ:

##### ໃນ Basic

         ui.Minimize()

##### ໃນ Python

         ui.Minimize()

## OpenBaseDocument

ເປີດເອກະສານ LibreOfficeDev Base ທີ່ມີຢູ່. ວິທີການນີ້ຈະສົ່ງຄືນອັອບເຈັກ Base.

### ໄວຍາກອນ:

svc.OpenBaseDocument(filename: str = '', registrationname: str = '', macroexecution: int = 0): svc

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

filename: ລະບຸໄຟລ໌ທີ່ຈະເປີດ. ມັນຕ້ອງເປັນໄປຕາມຮູບແບບການຕັ້ງຊື່ SF_FileSystem.FileNaming.

registrationname: ຊື່ທີ່ຈະໃຊ້ເພື່ອຄົ້ນຫາຖານຂໍ້ມູນໃນທະບຽນຖານຂໍ້ມູນ. ມັນຈະຖືກລະເວັ້ນຖ້າ FileName <> "".

macroexecution: 0 = ພຶດຕິກຳຖືກກຳນົດໂດຍການຕັ້ງຄ່າຂອງຜູ້ໃຊ້, 1 = ມາກໂຄບໍ່ສາມາດເຮັດວຽກໄດ້, 2 = ມາກໂຄສາມາດເຮັດວຽກໄດ້. ຄ່າເລີ່ມຕົ້ນແມ່ນ 0.

### ຕົວຢ່າງ:

##### ໃນ Basic

          Dim myBase As Object
          Set myBase = ui.OpenBaseDocument("C:\Documents\myDB.odb", MacroExecution := ui.MACROEXECALWAYS)

##### ໃນ Python

         myBase = ui.OpenBaseDocument(r"C:\Documents\myDB.odb", macroexecution = ui.MACROEXECALWAYS)

ເພື່ອປັບປຸງການອ່ານໂຄ້ດໃຫ້ງ່າຍຂຶ້ນ ທ່ານສາມາດໃຊ້ ຄ່າຄົງທີ່ທີ່ກຳນົດໄວ້ລ່ວງໜ້າ ສຳລັບອາຄິວເມນ macroexecution ຄືກັບໃນຕົວຢ່າງຂ້າງເທິງ.

## OpenDocument (*)

ເປີດເອກະສານ LibreOfficeDev ທີ່ມີຢູ່ດ້ວຍຕົວເລືອກທີ່ກຳນົດໃຫ້. ສົ່ງຄືນອັອບເຈັກເອກະສານ ຫຼື ຄະລາສຍ່ອຍຂອງມັນ. ວິທີການນີ້ຈະສົ່ງຄືນ Nothing (ໃນ BASIC) ຫຼື None (ໃນ Python) ຖ້າການເປີດຫຼົ້ມເຫຼວ, ເຖິງແມ່ນວ່າຄວາມຫຼົ້ມເຫຼວນັ້ນຈະເກີດຈາກການຕັດສິນໃຈຂອງຜູ້ໃຊ້ກໍຕາມ.

### ໄວຍາກອນ:

svc.Opendocument(filename: str, password: str = '', readonly: bool = False, hidden: bool = False, macroexecution: int = 0, filtername: str = '', filteroptions: str = ''): svc

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

filename: ລະບຸໄຟລ໌ທີ່ຈະເປີດ. ມັນຕ້ອງເປັນໄປຕາມຮູບແບບການຕັ້ງຊື່ FileNaming ຂອງບໍລິການ FileSystem.

password: ໃຊ້ເມື່ອເອກະສານຖືກປ້ອງກັນ. ຖ້າລະຫັດຜ່ານຜິດ ຫຼື ບໍ່ມີໃນຂະນະທີ່ເອກະສານຖືກປ້ອງກັນ, ຜູ້ໃຊ້ຈະຖືກຖາມໃຫ້ປ້ອນລະຫັດຜ່ານ.

readonly: ຄ່າເລີ່ມຕົ້ນ = False.

hidden: ຖ້າເປັນ True, ຈະເປີດເອກະສານໃໝ່ໃນພື້ນຫຼັງ (ຄ່າເລີ່ມຕົ້ນ = False). ຄວນໃຊ້ດ້ວຍຄວາມລະມັດລະວັງ: ການເປີດໃຊ້ງານ ຫຼື ການປິດໃນພາຍຫຼັງສາມາດເຮັດໄດ້ຜ່ານການຂຽນໂປຣແກຣມເທົ່ານັ້ນ.

macroexecution: 0 = ພຶດຕິກຳຖືກກຳນົດໂດຍການຕັ້ງຄ່າຂອງຜູ້ໃຊ້, 1 = ມາກໂຄບໍ່ສາມາດເຮັດວຽກໄດ້, 2 = ມາກໂຄສາມາດເຮັດວຽກໄດ້. ຄ່າເລີ່ມຕົ້ນແມ່ນ 0.

filtername: ຊື່ຂອງຕົວຕອງທີ່ຄວນໃຊ້ເພື່ອໂຫຼດເອກະສານ. ຖ້າມີການລະບຸ, ຕົວຕອງນັ້ນຕ້ອງມີຢູ່ແທ້.

filteroptions: ຂໍ້ຄວາມຕົວເລືອກເພີ່ມເຕີມທີ່ກ່ຽວຂ້ອງກັບຕົວຕອງ.

### ຕົວຢ່າງ:

##### ໃນ Basic

          Dim myDoc As Object, FSO As Object
          Set myDoc = ui.OpenDocument("C:\Documents\myFile.odt", ReadOnly := True)

##### ໃນ Python

         myDoc = ui.OpenDocument(r"C:\Documents\myFile.odt", readonly = True)

## Resize

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

### ໄວຍາກອນ:

svc.Resize(left: int = -1, top: int = -1, width: int = -1, height: int = -1)

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

left, top: ໄລຍະຫ່າງຂອງມຸມເທິງຊ້າຍຈາກຂອບເທິງ ແລະ ຂອບຊ້າຍຂອງໜ້າຈໍ, ເປັນພິກເຊວ.

width, height: ຂະໜາດໃໝ່ຂອງປ່ອງຢ້ຽມ, ເປັນພິກເຊວ.

### ຕົວຢ່າງ:

ໃນຕົວຢ່າງຕໍ່ໄປນີ້, width ແລະ height ຂອງປ່ອງຢ້ຽມຈະຖືກປ່ຽນແປງ ໃນຂະນະທີ່ top ແລະ left ຍັງຄືເກົ່າ.

##### ໃນ Basic

          ui.Resize(Width := 500, Height := 500)

##### ໃນ Python

         ui.Resize(width = 500, height = 500)

ເພື່ອປັບຂະໜາດປ່ອງຢ້ຽມທີ່ບໍ່ໄດ້ເຮັດວຽກຢູ່, ໃຫ້ເປີດໃຊ້ງານມັນກ່ອນໂດຍໃຊ້ວິທີການ Activate.

## RunCommand

ເຮັດວຽກຄຳສັ່ງ UNO ໃນປ່ອງຢ້ຽມປັດຈຸບັນ. ບາງຄຳສັ່ງທົ່ວໄປຄື: Save, SaveAs, ExportToPDF, Undo, Copy, Paste, ແລະ ອື່ນໆ.

ຄຳສັ່ງສາມາດເຮັດວຽກໄດ້ທັງແບບມີ ຫຼື ບໍ່ມີອາຄິວເມນ. ອາຄິວເມນຈະບໍ່ຖືກກວດສອບກ່ອນການເຮັດວຽກ. ຖ້າຄຳສັ່ງ ຫຼື ອາຄິວເມນບໍ່ຖືກຕ້ອງ, ຈະບໍ່ມີຫຍັງເກີດຂຶ້ນ.

ສຳລັບລາຍການຄຳສັ່ງ UNO ທັງໝົດທີ່ສາມາດໃຊ້ໃນ LibreOfficeDev, ໃຫ້ເບິ່ງທີ່ໜ້າ Wiki Development/DispatchCommands.

### ໄວຍາກອນ:

svc.RunCommand(command: str, [args: any])

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

command: ຂໍ້ຄວາມທີ່ລະບຸຊື່ຄຳສັ່ງ UNO (ຕົວອັກສອນໃຫຍ່-ນ້ອຍມີຄວາມໝາຍຕ່າງກັນ). ການໃສ່ຄຳນຳໜ້າ ".uno:" ແມ່ນຈະໃສ່ ຫຼື ບໍ່ກໍໄດ້. ຕົວຄຳສັ່ງເອງຈະບໍ່ຖືກກວດສອບຄວາມຖືກຕ້ອງ. ຖ້າບໍ່ມີຫຍັງເກີດຂຶ້ນຫຼັງຈາກຮຽກໃຊ້, ຄຳສັ່ງນັ້ນອາດຈະຜິດ.

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

### ຕົວຢ່າງ:

##### ໃນ Basic

ຕົວຢ່າງຕໍ່ໄປນີ້ຈະເຮັດວຽກຄຳສັ່ງ .uno:About ໃນປ່ອງຢ້ຽມປັດຈຸບັນ.

        Set ui = CreateScriptService("UI")
        ui.RunCommand("About")

ຂ້າງລຸ່ມນີ້ແມ່ນຕົວຢ່າງການເຮັດວຽກຄຳສັ່ງ UNO .uno:BasicIDEAppear ແລະ ສົ່ງອາຄິວເມນທີ່ຈຳເປັນເພື່ອເປີດ Basic IDE ໃນແຖວທີ່ກຳນົດຂອງໂມດູນ.

        ' ອາຄິວເມນທີ່ສົ່ງໄປຫາຄຳສັ່ງ:
        ' Document  = "LibreOffice Macros & Dialogs"
        ' LibName = "ScriptForge"
        ' Name = "SF_Session"
        ' Line = 600
        ui.RunCommand(".uno:BasicIDEAppear", "Document", "LibreOffice Macros & Dialogs", _
                      "LibName", "ScriptForge", "Name", "SF_Session", "Line", 600)

ໝາຍເຫດ: ການຮຽກໃຊ້ຄຳສັ່ງ BasicIDEAppear ໂດຍບໍ່ມີອາຄິວເມນ ຈະເປັນການເປີດ Basic IDE ຂຶ້ນມາຊື່ໆ.

##### ໃນ Python

        ui = CreateScriptService("UI")
        ui.RunCommand("About")

        ui.RunCommand(".uno:BasicIDEAppear", "Document", "LibreOffice Macros & Dialogs", \
                      "LibName", "ScriptForge", "Name", "SF_Session", "Line", 600)

ໃນ Python ຍັງສາມາດຮຽກໃຊ້ RunCommand ໂດຍໃຊ້ keyword arguments ໄດ້ອີກດ້ວຍ:

        ui.RunCommand(".uno:BasicIDEAppear", Document = "LibreOffice Macros & Dialogs", \
                      LibName = "ScriptForge", Name = "SF_Session", Line = 600)

ແຕ່ລະສ່ວນປະກອບຂອງ LibreOfficeDev ມີຊຸດຄຳສັ່ງຂອງຕົນເອງ. ວິທີທີ່ງ່າຍໃນການຮຽນຮູ້ຄຳສັ່ງແມ່ນໄປທີ່ ເຄື່ອງມື - ປັບແຕ່ງ - ແປ້ນພິມ. ເມື່ອທ່ານວາງເມົາສ໌ໄວ້ເທິງຟັງຊັນໃນລາຍການ ຟັງຊັນ, ຈະມີຂໍ້ຄວາມແນະນຳ (tooltip) ສະແດງຄຳສັ່ງ UNO ທີ່ກ່ຽວຂ້ອງ.

## SetStatusbar (*)

ສະແດງຂໍ້ຄວາມ ແລະ ແຖບຄວາມຄືບໜ້າໃນແຖບສະຖານະຂອງປ່ອງຢ້ຽມທີ່ກຳລັງເຮັດວຽກ. ການຮຽກໃຊ້ຄັ້ງຕໍ່ໆໄປໃນມາກໂຄດຽວກັນຈະອ້າງອີງເຖິງແຖບສະຖານະຂອງປ່ອງຢ້ຽມເດີມ, ເຖິງແມ່ນວ່າປ່ອງຢ້ຽມນັ້ນຈະບໍ່ເຫັນແລ້ວກໍຕາມ. ການຮຽກໃຊ້ໂດຍບໍ່ມີອາຄິວເມນຈະເປັນການຕັ້ງຄ່າແຖບສະຖານະກັບຄືນສູ່ສະພາວະປົກກະຕິ.

### ໄວຍາກອນ:

svc.SetStatusbar(text: str = '', percentage: int = -1)

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

text: ຂໍ້ຄວາມເພີ່ມເຕີມທີ່ຈະສະແດງຢູ່ທາງໜ້າແຖບຄວາມຄືບໜ້າ.

percentage: ລະດັບຄວາມຄືບໜ້າລະຫວ່າງ 0 ຫາ 100.

### ຕົວຢ່າງ:

##### ໃນ Basic

          Dim i As Integer
          For i = 0 To 100
              ui.SetStatusbar("Progress ...", i)
              Wait 50
          Next i
          ' ຕັ້ງຄ່າແຖບສະຖານະໃໝ່
          ui.SetStatusbar

##### ໃນ Python

         from time import sleep
         for i in range(101):
             ui.SetStatusbar("Test:", i)
             sleep(0.05)
         ui.SetStatusbar()

## ShowProgressBar

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

### ໄວຍາກອນ:

svc.ShowProgressBar(title: str = '', text: str = '', percentage: int = -1)

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

title : ຫົວຂໍ້ທີ່ຈະປາກົດຢູ່ເທິງສຸດຂອງກ່ອງໂຕ້ຕອບ. ຄ່າເລີ່ມຕົ້ນ = "ScriptForge".

text: ຂໍ້ຄວາມເພີ່ມເຕີມທີ່ຈະສະແດງຢູ່ເທິງແຖບຄວາມຄືບໜ້າ.

percentage: ລະດັບຄວາມຄືບໜ້າລະຫວ່າງ 0 ຫາ 100.

### ຕົວຢ່າງ:

##### ໃນ Basic

          Dim i As Integer
          For i = 0 To 100
              ui.ShowProgressBar("Window Title", "Progress ..." & i & "/100", i)
              Wait 50
          Next i
          ' ປິດປ່ອງຢ້ຽມແຖບຄວາມຄືບໜ້າ
          ui.ShowProgressBar

##### ໃນ Python

         from time import sleep
         for i in range(101):
             ui.ShowProgressBar("Window Title", "Progress ... " + str(i) + "/100", i)
             sleep(0.05)
         # ປິດປ່ອງຢ້ຽມແຖບຄວາມຄືບໜ້າ
         ui.ShowProgressBar()

## WindowExists

ສົ່ງຄືນ True ຖ້າສາມາດລະບຸປ່ອງຢ້ຽມທີ່ກຳນົດໃຫ້ໄດ້.

### ໄວຍາກອນ:

svc.WindowExists(windowname: str): bool

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

windowname: ເບິ່ງຄຳນິຍາມຂ້າງເທິງ.

### ຕົວຢ່າງ:

##### ໃນ Basic

          If ui.WindowExists("C:\Document\My file.odt") Then
              ' ...

##### ໃນ Python

         if ui.WindowExists(r"C:\Document\My file.odt"):
             # ...

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

ການບໍລິການ ScriptForge.Basic

ບໍລິການ SFDocuments.Calc

ບໍລິການ SFDocuments.Document

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