Страница: 1 |
Страница: 1 |
Вопрос: UserControl
Добавлено: 26.11.06 18:41
Автор вопроса: Vit | Web-сайт:
Вариант 1
With UserControl
If X < 0 Or X > .ScaleWidth Or Y < 0 Or Y > .ScaleHeight Then
ReleaseCapture
RaiseEvent MouseOut()
' ...
Else
SetCapture .hWnd
RaiseEvent MouseMove(Button, Shift, X, Y)
' ...
End If
End With
End Sub
Вариант 2
With UserControl
If X < 0 Or X > .ScaleWidth Or Y < 0 Or Y > .ScaleHeight Then
RaiseEvent MouseOut()
' ...
Else
RaiseEvent MouseMove(Button, Shift, X, Y)
' ...
End If
End With
End Sub
Описываю проблему:
У меня на контроле я использую только один элемент - Label.
При коде Вариант 1 событие MouseMove и MouseOut обрабатываются правильно, т.е. даже при быстром перемещении курсора событие MouseOut успевает сработать, но обработка события Label1_Click(), находящего в контроле происходит со сторого раза, как и остальные события контролов. Поясню, это событие срабатывает со второго нажатия на котрол.
Если использовать код Вариант 2 всё нормально, кроме обработки X и Y, т.е. при быстром перемещении мыши, код не успевает сработать.
Что можно сделать?
Ответы
Всего ответов: 5
Номер ответа: 1
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #1
Добавлено: 26.11.06 20:03
Создать таймер, в таймере api фциями GetCursorPos получать координаты мыши и сравнивать их с координатами юзерконтрола...
Номер ответа: 2
Автор ответа:
-АлександР-
Вопросов: 55
Ответов: 1008
Web-сайт:
Профиль | | #2
Добавлено: 26.11.06 20:51
Номер ответа: 3
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #3
Добавлено: 27.11.06 11:11
Попробуй STATIC, MouseHover, MouseLeave, ну и сабкласс. Геморно, но все же не таймер. Может и не поможет, если тут байда с фокусом...
Номер ответа: 4
Автор ответа:
Vit
Вопросов: 68
Ответов: 62
Web-сайт:
Профиль | | #4
Добавлено: 27.11.06 17:50
Что за STATIC? Вариант с таймером я рассматривал, но отказался в силу того, что экземплятов котрола будет много.
Буду думать...
Номер ответа: 5
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #5
Добавлено: 27.11.06 18:19
Я как то лет 300 назад, делал пример MouseOut.. Он так и называется, и где то в примерах на этом сайте он есть. Посмотри, может что полезного оттуда выдернешь.. Хотя я уже даже и не помню как там все делал.. (( давно это было..