ການຊ່ວຍເຫຼືອ LibreOffice 26.2
ເຫດການທີ່ເກີດຈາກໄດອາລັອກ, ເອກະສານ, ຟອມ ຫຼື ຕົວຄວບຄຸມກຣາຟິກ ສາມາດເຊື່ອມໂຍງກັບແມັກໂຄຣໄດ້ ເຊິ່ງເອີ້ນວ່າການຂຽນໂປຣແກຣມທີ່ຂັບເຄື່ອນດ້ວຍເຫດການ. ວິທີທີ່ພົບເລື້ອຍທີ່ສຸດແມ່ນການໃຊ້ແຖບ ເຫດການ ໃນເມນູ ແລະ ໜ້າຕ່າງຄຸນສົມບັດຂອງຕົວຄວບຄຸມໃນ ຕົວແກ້ໄຂໄດອາລັອກ ຈາກເມນູ .
ສ່ວນປະກອບກຣາຟິກ, ການປ້ອນຂໍ້ມູນຜ່ານຄີບອດ, ການເຄື່ອນໄຫວເມົາສ໌ ແລະ ການໂຕ້ຕອບອື່ນໆ ສາມາດຄວບຄຸມໄດ້ໂດຍໃຊ້ UNO listeners ທີ່ຕິດຕາມພຶດຕິກຳຂອງຜູ້ໃຊ້. Listeners ແມ່ນທາງເລືອກແບບໄດນາມິກແທນການມອບໝາຍແມັກໂຄຣ. ເຮົາສາມາດສ້າງ UNO listener ໄດ້ຫຼາຍຕົວຕາມເຫດການທີ່ຕ້ອງການຕິດຕາມ. Listener ຕົວດຽວກໍສາມາດຈັດການຕົວຄວບຄຸມສ່ວນຕິດຕໍ່ຜູ້ໃຊ້ໄດ້ຫຼາຍຕົວ.
Listeners ຈະຖືກຕິດໃສ່ກັບຕົວຄວບຄຸມໃນໄດອາລັອກ, ລວມເຖິງເຫດການຂອງເອກະສານ ຫຼື ຟອມ. Listeners ຍັງຖືກໃຊ້ເມື່ອສ້າງໄດອາລັອກໃນຂະນະຣັນ ຫຼື ເມື່ອເພີ່ມຕົວຄວບຄຸມໃສ່ໄດອາລັອກແບບທັນທີ.
ຕົວຢ່າງນີ້ສ້າງ listener ສຳລັບຕົວຄວບຄຸມ Button1 ຂອງໄດອາລັອກ Dialog1 ໃນໄລບຣາຣີ Standard.
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
import uno, unohelper
from com.sun.star.awt import XActionListener
from com.sun.star.awt import ActionEvent
from com.sun.star.lang import EventObject
from com.sun.star.ui.dialogs.ExecutableDialogResults \
import OK, CANCEL
import msgbox as util
_MY_BUTTON = "Button1"
_MY_LABEL = 'Python ກຳລັງຮັບຟັງ..'
_DLG_PROVIDER = "com.sun.star.awt.DialogProvider"
def Main(*args):
ui = createUnoDialog("Standard.Dialog1", embedded=True)
ui.Title = "Python X[any]Listener"
ctl = ui.getControl(_MY_BUTTON)
ctl.Model.Label = _MY_LABEL
act = ActionListener()
ctl.addActionListener(act)
rc = ui.execute()
if rc == OK:
MsgBox("ຜູ້ໃຊ້ໄດ້ຢືນຢັນໄດອາລັອກແລ້ວ.")
elif rc == CANCEL:
MsgBox("ຜູ້ໃຊ້ໄດ້ຍົກເລີກໄດອາລັອກແລ້ວ.")
ui.dispose() # ui.endExecute
ctl.removeActionListener(act)
def createUnoDialog(libr_dlg: str, embedded=False):
""" ສ້າງໄດອາລັອກຈາກຕຳແໜ່ງທີ່ຕັ້ງຂອງມັນ """
smgr = XSCRIPTCONTEXT.getComponentContext().ServiceManager
if embedded:
model = XSCRIPTCONTEXT.getDocument()
dp = smgr.createInstanceWithArguments(_DLG_PROVIDER, (model,))
location = "?location=document"
else:
dp = smgr.createInstanceWithContext(_DLG_PROVIDER, ctx)
location = "?location=application"
dlg = dp.createDialog("vnd.sun.star.script:"+libr_dlg+location)
return dlg
class ActionListener(unohelper.Base, XActionListener):
""" ຮັບຟັງ ແລະ ນັບຈຳນວນການກົດປຸ່ມ """
def __init__(self):
self.count = 0
def actionPerformed(self, evt: ActionEvent):
self.count = self.count + 1
#mri(evt)
if evt.Source.Model.Name == _MY_BUTTON:
evt.Source.Model.Label = _MY_LABEL+ str( self.count )
return
def disposing(self, evt: EventObject): # ຣູທິນທີ່ບັງຄັບຕ້ອງມີ
pass
def MsgBox(txt: str):
mb = util.MsgBox(uno.getComponentContext())
mb.addButton("Ok")
mb.show(txt, 0, "Python")
g_exportedScripts = (Main,)
msgbox.py ໃນໄດເຣັກທໍຣີ {installation}/program/ ມີຕົວຢ່າງບາງອັນຂອງ button listeners.
Option Explicit
Const MY_LIBRARY = "Standard", MY_DIALOG = "Dialog1", MY_BUTTON = "Button1"
Const MY_LABEL = "Basic ກຳລັງຮັບຟັງ.."
Dim count As Integer
Sub Main
Dim libr As Object ' com.sun.star.script.XLibraryContainer
Dim dlg As Object
Dim ui As Object ' stardiv.Toolkit.UnoDialogControl
Dim ctl As Object ' stardiv.Toolkit.UnoButtonControl
Dim act As Object ' com.sun.star.awt.XActionListener
Dim rc As Object : rc = com.sun.star.ui.dialogs.ExecutableDialogResults
BasicLibraries.LoadLibrary(MY_LIBRARY)
libr = DialogLibraries.GetByName(MY_LIBRARY)
dlg = libr.GetByName(MY_DIALOG)
ui = CreateUnoDialog(dlg)
ui.Title = "Basic X[any]Listener example"
count = 0
ctl = ui.GetControl(MY_BUTTON)
ctl.Model.Label = MY_LABEL
act = CreateUnoListener("awt_", "com.sun.star.awt.XActionListener")
ctl.addActionListener(act)
Select Case ui.Execute
Case rc.OK : MsgBox "ຜູ້ໃຊ້ໄດ້ຢືນຢັນໄດອາລັອກແລ້ວ.",, "Basic"
Case rc.CANCEL : MsgBox "ຜູ້ໃຊ້ໄດ້ຍົກເລີກໄດອາລັອກແລ້ວ.",, "Basic"
End Select
ui.dispose ' ui.endExecute()
ctl.removeActionListener(act)
End Sub
Private Sub awt_actionPerformed(evt As com.sun.star.awt.ActionEvent)
''' ຮັບຟັງ ແລະ ນັບຈຳນວນການກົດປຸ່ມ '''
With evt.Source.Model
If .Name = MY_BUTTON Then
count = count + 1
.Label = MY_LABEL+Cstr(count)
End If
End With
End Sub ' awt_actionPerformed
Private Sub awt_disposing(evt As com.sun.star.lang.EventObject) ' mandatory Sub
' ໃສ່ລະຫັດຂອງທ່ານຢູ່ບ່ອນນີ້
End Sub ' awt_disposing
Listeners ມັກຈະຖືກຂຽນລະຫັດໄປພ້ອມກັບ ການເປີດໄດອາລັອກ. ມີວິທີການໃຊ້ listener ຫຼາຍຮູບແບບ ເຊັ່ນ event handlers ສຳລັບໄດອາລັອກ ຫຼື event monitors ສຳລັບເອກະສານ ຫຼື ຟອມ.