Adicionar "Eventos" em tempo de execução

Adicionar “Eventos” em tempo de execução
Estou tentando entender como funciona a criação de formulários em tempo de execução e me deparei com a seguinte dúvida:

É possível adicionar um evento em tempo de execução, como, por exemplo:
Ao passar o mouse sobre um botão (Equivalente ao evento "Ao receber foco"), é possível associar uma mensagem?

Segue o código:

Sub dlgSenha
  ' Criar o diálogo
  frmSenha = CreateUnoService("com.sun.star.awt.UnoControlDialog")
  oDlgModel = CreateUnoService("com.sun.star.awt.UnoControlDialogModel")
  oDlgModel.setPropertyValues( _
    Array("Height","PositionX","PositionY","Title","Width"), _
    Array( 50 , 100 , 100 , "Insira sua senha" , 100))
  frmSenha.setModel(oDlgModel)

  ' Criar a caixa de texto (oEditModel) que receberá a senha.
  txtSenha = oDlgModel.createInstance("com.sun.star.awt.UnoControlEditModel")
  txtSenha.setPropertyValues( _
    Array("EchoChar","Height","PositionX","PositionY","Width"), _
    Array(asc( "*" ) , 15 , 5 , 5 , 90 ) )
  txtSenha.EchoChar = asc("*")
  oDlgModel.insertByName("PasswordEdit",txtSenha)

  ' Criar o botão "Ok"
  btnOk = oDlgModel.createInstance("com.sun.star.awt.UnoControlButtonModel")
  btnOk.setPropertyValues( _
    Array("DefaultButton","Height","Label","PositionX","PositionY","PushButtonType","Width"), _
    Array( True , 15 , "~OK" , 55 , 25 , 1 ,40 ))
  oDlgModel.insertByName( "OkButton" , btnOk)
  
  ' Criar o botão "Cancelar"
  btnCancelar = oDlgModel.createInstance("com.sun.star.awt.UnoControlButtonModel")
  btnCancelar.setPropertyValues( _
    Array( "Height" , "Label" , "PositionX" , "PositionY" , "PushButtonType" , "Width" ), _
    Array( 15 , "~Cancelar" , 5 , 25 , 2 , 40 ))
  oDlgModel.insertByName( "CancelButton" , btnCancelar )
  
  ' Exibir o diálogo
  frmSenha.setVisible(True)
  If frmSenha.execute() = 1 Then
    ' Retorna a senha fornecida
    If txtSenha.Text = "" Then
    	msgbox "Você não digitou uma senha " , 64 , "Informe"
    Else
    	msgbox "A senha digitada foi " & txtSenha.Text , 64 , "Informe"
    End If 
  End If
End Sub

Depois de muita pesquisa, finalmente encontrei uma luz no fim do túnel :D.

Futuramente estarei adaptando ao código anterior para deixar o código 100% Runtime
Créditos ao Mauricio Baeza e ao @osxtra do Ask do LibreOffice, disponível em:

https://help.libreoffice.org/latest/pt-BR/text/sbasic/python/python_listener.html?&DbPAR=BASIC&System=WIN

Para encurtar os caminhos, segue código com os principais eventos dos botões:

Para .EventMethod e .ListenerType, um botão de pressão tem 15 eventos possíveis.
No modo de design, examine as propriedades de controle de um botão e observe a guia de eventos.
Combine o rótulo do evento que você deseja afetar ao .EventMethod mostrado abaixo e preencha os dois campos de acordo:

  • .EventMethod → .ListenerType

mousePressedXMouseListener
resettedXResetListener
approveResetXResetListener
approveActionXApproveActionListener
mouseMovedXMouseMotionListener
mouseDraggedXMouseMotionListener
mouseEnteredXMouseListener
mouseReleasedXMouseListener
keyReleasedXKeyListener
focusLostXFocusListener
keyPressedXKeyListener
mouseExitedXMouseListener
itemStateChangedXItemListener
focusGainedXFocusListener
actionPerformedXActionListener

Planilha Exemplo / Planilha Revisão

Estou adicionando uma nova planilha com adição de um evento mouse_move e outro evento mouse_clik, sendo que o clique adiciona a contagem no próprio botão e o move atualiza data e hora do Label.

Ola @WBastos, já listado em Documentação aqui no ask.

na planilha de exemplo, está com erro na linha 22.

Erro de execução do BASIC.
Ocorreu uma exceção 
Type: com.sun.star.lang.WrappedTargetException
Message: 
TargetException:
  Type: com.sun.star.script.LibraryNotLoadedException
  Message:

@mrkalvin, realmente está com erro na primeira chamada do formulário através do botão, mas se chamar o procedimento novamente pelo botão ou executar a Sub diretamente pela IDE vai funcionar.

Chegando em casa dou uma olhada.

@WBastos, creio que precise refinar o código, quando anda lentamente sobre o botão com o cursor, o contador vai aumentando. ( em Win10 + LibO7122 ou 7142 ou 7200 )

@schiavinatto, foi corrigido o erro da linha 22 com a substituição de:

BasicLibraries.LoadLibrary(BIBLIOTECA)

por:

DialogLibraries.LoadLibrary(BIBLIOTECA)

Aqui um exemplo de Listener de teclado:

https://forum.openoffice.org/en/forum/viewtopic.php?f=20&t=45516&p=210425&hilit=KeyHandler_KeyPressed#p210425

oEvent.KeyCode = 1280

No exemplo alterou o evento da tecla Enter no calc, que normalmente muda para a celula de baixo e substituiu por mover para direita, no intervalo de celulas pre determinado (linha 15)

@mrkalvin, código bem interessante. Obrigado pela contribuição.