[Решено] XMouseListener

Автор vladboscaneanu, 26 августа 2014, 02:21

0 Пользователи и 1 гость просматривают эту тему.

vladboscaneanu

здравствуйте друзья,не пойму в чем ошибка.Код работает,вот только пры выходе выдаёт Run-Time Error"Property or method not found $(ARG1)"
Sub My_Listener
myListener=createUnoListener("MouseListener_","com.sun.star.awt.XMouseListener")
myModel= ThisComponent.DrawPages.GetByIndex(0).Forms.GetByIndex(0).GetByName("Campo di testo 1")
myModelControl= ThisComponent.CurrentController.getControl(myModel)
myModelControl.addMouseListener(myListener)
End Sub
'
Sub MouseListener_mouseEntered()
print "Mouse entered!"
End Sub
Sub MouseListener_mouseExited()
print "Mouse exited"
End sub
'

После нажатия Start Listener пройдитесь мышкой по текстовому полю ,а потом попробуйте закрыть документ.

rami

#1
Цитата: vladboscaneanu от 26 августа 2014, 01:21не пойму в чем ошибка.Код работает,вот только пры выходе выдаёт Run-Time Error"Property or method not found $(ARG1)"
Добавьте:Sub MouseListener_disposing()
End Sub
Я предпочитаю назначать подобные события непосредственно в редакторе свойств элемента управления(без макроса)

vladboscaneanu

А как это работает?

rami

Цитата: vladboscaneanu от 26 августа 2014, 07:54А как это работает?
В режиме разработки выделите нужный элемент и нажмите значок "Элемент управления" на панели "Элементы управления" и в окне "Свойства" нажмите кнопку "События" и назначьте нужный макрос нужному событию.

vladboscaneanu

Да нет брат,я имел ввиду зачем нужен пустой Sub,с методом _disposing().

Hasim

#5
Цитата: vladboscaneanu от 26 августа 2014, 12:05
Да нет брат,я имел ввиду зачем нужен пустой Sub,с методом _disposing().
Чтобы корректно закрыть Listener.

Вставьте непустой макрос:
Sub MouseListener_disposing()
MsgBox "Закрываем Listener"
End Sub


и позакрывайте, запуская и не запуская Listener.

vladboscaneanu

Спасибо  вам ребята,теперь понял .К каждому листенеру нужно обязательно прикрепить метод disposing() ,помимо своих методов.Ещё раз спасибо.
Логика офиса не перестает удивлять.