Posłuchaki Python: Podawkowe posłuchaki wutworić

Wobsah

# Podawkowe posłuchaki wutworić

Podawki, kotrež so přez dialogi, dokumenty, formulary abo grafiske wodźenske elementy wuwabjeja, dadáz so z makrami zwjazać, kotrež so přez podawk wodźene programowanje mjenuja. Najbóle zwučena metoda, zo by podawki z makrami do poćaha stajiła, su rajtark Podawki w meniju Nastroje – Přiměrić a wodźenske kajkosće w dialogowym editorje z menija Nastroje – Makra – Dialogi rjadować….

Grafiske nastroje, tastaturowe zapodaća, pohiby myški a druhe interakcije mjez čłowjekom a mašinu dadźa so z pomocu UNO-posłuchakow wodźić, kotrež na zadźerženje wužiwarja kedźbuja. Posłuchaki su dynamiske alternatiwy programoweho koda za makrowe připokazanja. Dadźa so telko UNO-posłuchakow kaž podawki wutworić, na kotrež so maja kedźbować. Jednotliwy posłuchak móže tež z wjacorymi wodźenskimi elementami wužiwarskeho powjercha wobchadźeć.

## Podawkowy posłuchak wutworić

Posłuchaki so k wodźenskim elementam připowěšeja, kotrež su w dialogach wobsahowane, kaž tež k dokumentowym abo formularowym podawkam. Posłuchaki so tež wužiwaja, hdyž so dialogi časa fungowanja tworja abo hdyž so dialogej wodźenske elementy za wokomik přidawaja.

Tutón přikład posłuchak za wodźenje Button1 dialoga Dialog1 w bibliotece Standard wutwori.

### Z Python

             # -*- 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 připoskuje.'
             _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(„Wužiwar je dialog wobkrućił.“)
                 elif rc == CANCEL:
                     MsgBox(„Wužiwar je dialog přetorhnył.“)
                 ui.dispose()  # ui.endExecute
                 ctl.removeActionListener(act)

             def createUnoDialog(libr_dlg: str, embedded=False):
                 """ Dialog z jeho městna wutworić """
                 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):
                 """ Připosłuchać a kliknjenja tłóčatkow ličić """
                 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): # obligatoriska rutina
                     pass

             def MsgBox(txt: str):
                 mb = util.MsgBox(uno.getComponentContext())
                 mb.addButton("Ok")
                 mb.show(txt, 0, "Python")

             g_exportedScripts = (Main,)

Zapis msgbox.py w {installation}/program/ někotre přikłady tłóčatkowych posłuchakow wobsahuje.

### Z LibreOfficeDev Basic

             Option Explicit

             Const MY_LIBRARY = "Standard", MY_DIALOG = "Dialog1", MY_BUTTON = "Button1"
             Const MY_LABEL = "Basic připoskuje."
             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 „Wužiwar je dialog wobkrućił.“,, "Basic"
                     Case rc.CANCEL : MsgBox "Wužiwar je dialog přetorhnył.",, "Basic"
                 End Select
                 ui.dispose ' ui.endExecute()
                 ctl.removeActionListener(act)
             End Sub

             Private Sub awt_actionPerformed(evt As com.sun.star.awt.ActionEvent)
                 """ Kliknjenja tłóčatkow připosłuchać a ličić """
                 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
                 ' waš kod sem słuša
             End Sub ' awt_disposing

## Druhe podawkowe posłuchaki

Posłuchaki so zwjetša hromadźe z dialogowym wočinjenjom koduje. Mnoholičbne přistupy su móžne kaž na přikład podawkowe předźěłowaki za dialogi abo podawkowe monitory za dokumenty abo formulary.

Podobne temy

Programowanske přikłady za wodźenske elementy w dialogowym editorje

CreateUnoListener Function

Přirjadowanje podawkow objektam

Hlejće tež dokumentowe podawki, formularowe podawki.

Dialogowy předźěłowak wutworić

Dokumentowe podawki dohladować

programowanske přikłady Python

Prošu podpěrajće nas!