powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как вызвать функцию на событие MouseMove?
6 сообщений из 6, страница 1 из 1
Как вызвать функцию на событие MouseMove?
    #38176758
ЛилиПути
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На форме есть 100500 контролов, и мне нужно, что бы всегда знал, наl каким контролом в данный момент находится мышька. Можно для каждого контрола в режиме конструктора ВРУЧНУЮ определить функцию (ControlName_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)). Когда контролов не много - ладно, можно мышкой потыкать, а когда их реально стопицот можно ли как-то вместо [Процедура обработки событий] вписать что-то на подобие "=FunctionMouseMove(..." и передать в вызываемую функцию координаты мыши и имя контрола?
...
Рейтинг: 0 / 0
Как вызвать функцию на событие MouseMove?
    #38176830
Фотография гурД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛилиПутиНа форме есть 100500 контролов, и мне нужно, что бы всегда знал, наl каким контролом в данный момент находится мышька. Можно для каждого контрола в режиме конструктора ВРУЧНУЮ определить функцию (ControlName_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)). Когда контролов не много - ладно, можно мышкой потыкать, а когда их реально стопицот можно ли как-то вместо [Процедура обработки событий] вписать что-то на подобие "=FunctionMouseMove(..." и передать в вызываемую функцию координаты мыши и имя контрола?
Попробуйте методом CreateEventProc. Хэлп:
Метод CreateEventProc создает процедуру обработки событий в модуле класса. Он возвращает значение типа Long, указывающее номер первой строки процедуры обработки событий.

Синтаксис

объект.CreateEventProc(имяСобытия, имяОбъекта)

Метод CreateEventProc использует следующие аргументы.

Аргумент Описание
объект Объект Module, свойство Type которого возвращает константу acClassModule, имеющую значение 1.
имяСобытия Строковое выражение,значением которого является имя события.
имяОбъекта Объект, для которого возникает событие, указанное в аргументе имяСобытия. Сюда относятся объекты Form, Report и Control, а также раздел формы, раздел отчета и модуль класса.

На основе примера из хэлпа попробуйте примерно так:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
Function ClickEventProc() As Boolean
Dim frm As Form, ctl As Control, mdl As Module
Dim lngReturn As Long

On Error GoTo Error_ClickEventProc

'Возвращает ссылку на форму
set frm = Forms!ВашаФорма
'Возвращает ссылку на модуль формы.
Set mdl = frm.Module

	for each ctl in frm		' for i=0 to стопиццот контролов -1
	
'			 Добавляет процедуру обработки события.
		lngReturn = mdl.CreateEventProc("Здесь имя процедуры в кавычках", ctl.Name)

'			 Вставляет текст в процедуру.
		mdl.InsertLines lngReturn + 1, vbTab & "MsgBox ""Порядок!"""
		ClickEventProc = True
		
	Next ctl

Exit_ClickEventProc:
	Exit Function

Error_ClickEventProc:
	MsgBox Err & " :" & Err.Description
	ClickEventProc = False
	Resume Exit_ClickEventProc
End Function

...
Рейтинг: 0 / 0
Как вызвать функцию на событие MouseMove?
    #38176836
srgPlun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно ставить в событии(OnMouseMove) =myMouseMove("имя_контрола"). единственная сложность, что нужно прописать для каждого контрола.

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
	
'временная: 
for each ctl in frm		' for i=0 to стопиццот контролов -1

ctl.OnMouseMove="=myMouseMove(" & chr(34) &  ctl.Name & chr(34) &  ")"

Next ctl


'в модуле или форме
Public function myMouseMove( byval ctrlName as string)

end  function


в процессе разработки, тестов myMouseMove может глюкануть и выдавать сообщение об ошибке. проходит только после перезапуска Access-а.


пс: еще можно получать положение курсора(GetCursor) и сравнивать с положениями контрлов. но это слишком затратный вариант.
...
Рейтинг: 0 / 0
Как вызвать функцию на событие MouseMove?
    #38176838
srgPlun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
*GetCursorPos
...
Рейтинг: 0 / 0
Как вызвать функцию на событие MouseMove?
    #38176849
Фотография гурД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Недописалось при копировании:
Код: vbnet
1.
for each ctl in frm.controls
...
Рейтинг: 0 / 0
Как вызвать функцию на событие MouseMove?
    #38176871
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как вызвать функцию на событие MouseMove?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]