Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
 как получить ссылку на control, вызвавший событие %) (при том что он не активный)  [new]
____Дмитрий___
Guest
?
17 июл 04, 01:57    [815211]     Ответить | Цитировать Сообщить модератору
 Re: как получить ссылку на control, вызвавший событие %) (при том что он не активный)  [new]
Лох Позорный
Member

Откуда:
Сообщений: 9898
Бред
Человек, задавший этот вопрос - не понимает, что такое события
На вопрос можно не отвечать, топик я удалю.
17 июл 04, 02:01    [815213]     Ответить | Цитировать Сообщить модератору
 Re: как получить ссылку на control, вызвавший событие %) (при том что он не активный)  [new]
____Дмитрий___
Guest
лох, не могли бы вы все таки пояснить - чего я не понимаю.
есть надпись - по MouseMove хочется ее подчеркнуть - надписей таких много -единственный вариант - с перебором - всех контролов и проверкой координат?
17 июл 04, 02:33    [815223]     Ответить | Цитировать Сообщить модератору
 Re: как получить ссылку на control, вызвавший событие %) (при том что он не активный)  [new]
____Дмитрий___
Guest
лох, может быть вас покоробило слово "вызвавший" - ок, элемент, которому принадлежит событие.
17 июл 04, 04:23    [815238]     Ответить | Цитировать Сообщить модератору
 Re: как получить ссылку на control, вызвавший событие %) (при том что он не активный)  [new]
Deminik
Member

Откуда: Новосибирск
Сообщений: 695
>>> есть надпись - по MouseMove хочется ее подчеркнуть

MouseMove, наверное и принадлежит этой надписи... правильно ?
17 июл 04, 10:32    [815275]     Ответить | Цитировать Сообщить модератору
 Re: как получить ссылку на control, вызвавший событие %) (при том что он не активный)  [new]
Shuhard
Member

Откуда:
Сообщений: 4998
____Дмитрий___
лох, не могли бы вы все таки пояснить - чего я не понимаю.
есть надпись - по MouseMove хочется ее подчеркнуть - надписей таких много -единственный вариант - с перебором - всех контролов и проверкой координат?

для "полётов" мышью других вариантов науке не известно
(либо один обработчик+координаты
либо каждой надписе по личному обработчику
либо каждой надписе при вызове общего обработчика имя контрола)
17 июл 04, 11:05    [815299]     Ответить | Цитировать Сообщить модератору
 Re: как получить ссылку на control, вызвавший событие %) (при том что он не активный)  [new]
АлексейК
Member

Откуда: http://www.msdatabase.ru , Moscow
Сообщений: 7683
еще специфическое решение
над контрлами прозрачная надпись у которой контролируется движение мыши
при загрузке формы создается массив в котором каждому значению горизонтальных координат соответствует имя контрола
19 июл 04, 08:52    [816342]     Ответить | Цитировать Сообщить модератору
 Re: как получить ссылку на control, вызвавший событие %) (при том что он не активный)  [new]
ячсм
Guest
лох, не могли бы вы все таки пояснить - чего я не понимаю.

Если вы перехватили событие - то вы уже знаете, от какого именно объекта оно пришло. Так что изначальный вопрос смысла не имеет.

Разумеется, это не относится к случаю, когда один и тот же обработчик используется для обработки одного и того же события от нескольких однотипных объектов. Во-первых средствами VB такую обработку сделать не получится. Во-вторых сами объекты и события (например ADODB.Recordset), спроектирование под такую обработку событий, обычно передают в обработчик события ссылку на объект-источник. Объекты аксеса таким умом и сообразительностью - не отличаются.

Сама среда аксеса позволяет это как-то обойти (назначить с качестве обработчика для кучи визуальных контролов какой-нибудь один макрос, либо какую-либо рукописную функцию), но таким образом все равно не получится новой функциональности, изначально отсутствующей в самих объектах, генерирующих событие. Поэтому - приходится использовать либо активный контрол, либо координаты мыши, либо расположение звезд на небе.
19 июл 04, 10:26    [816550]     Ответить | Цитировать Сообщить модератору
 Re: как получить ссылку на control, вызвавший событие %) (при том что он не активный)  [new]
ячсм
Guest
З.Ы. А чего это я злой как собака позавчера был?
19 июл 04, 10:27    [816555]     Ответить | Цитировать Сообщить модератору
 Re: как получить ссылку на control, вызвавший событие %) (при том что он не активный)  [new]
Владимир Саныч
Member

Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты)
Сообщений: 40414
ячсм
Разумеется, это не относится к случаю, когда один и тот же обработчик используется для обработки одного и того же события от нескольких однотипных объектов. Во-первых средствами VB такую обработку сделать не получится.

Получится. Не использовать один и тот же обработчик. Хотя бы передать ему параметр.
19 июл 04, 10:39    [816598]     Ответить | Цитировать Сообщить модератору
 Re: как получить ссылку на control, вызвавший событие %) (при том что он не активный)  [new]
ячсм
Guest
Саныч, ты меня удивляешь
Я сказал, что средствами VB не получится использовать один обработчик - ты ответил что получится, причем НЕ использовать один обработчик
Ну да... отрицание отрицания :))
19 июл 04, 10:54    [816659]     Ответить | Цитировать Сообщить модератору
 Re: как получить ссылку на control, вызвавший событие %) (при том что он не активный)  [new]
Владимир Саныч
Member

Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты)
Сообщений: 40414
Обработчик бывает 3 видов.

1. [Event Procedure]. Проблем нет, в каждом событии ясно, к какому контролу оно относится.

2. =функция(). Обработчик один на всех, но есть возможность различать контролы при помощи параметра.

3. макрос. Обработчик один на всех, и нет возможности различать контролы.
19 июл 04, 11:35    [816884]     Ответить | Цитировать Сообщить модератору
 Re: как получить ссылку на control, вызвавший событие %) (при том что он не активный)  [new]
ячсм
Guest
Саныч
Обработчик бывает 3 видов.

Это как раз то, про что я сказал
я
Сама среда аксеса позволяет это как-то обойти

При каноническом использовании ActiveX никаких таких трех видов обработчиков не бывает. Это уже аксесовсая отсебятина.

Саныч
2. =функция(). Обработчик один на всех, но есть возможность различать контролы при помощи параметра.

Ничем принципиально не отличается от "[Event Procedure]" c вызовом какой хочешь функции с каким хочешь параметром.
Правда, можно использовать синтаксис "=функция(Form.ActiveControl)" для передачи ссылки на активный контрол. Тоже блин аксесовская отсебятина, но только из-за этого можно вынести отдельным пунктом.
В рассматриваемом случае - не прокатывает (по причине отсутствия активного контрола). Остаются координаты мышки или расположение звезд
19 июл 04, 11:47    [816927]     Ответить | Цитировать Сообщить модератору
 Re: как получить ссылку на control, вызвавший событие %) (при том что он не активный)  [new]
Владимир Саныч
Member

Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты)
Сообщений: 40414
Пытаюсь телепятить, что у автора вопроса одна из ситуаций 2 или 3.
19 июл 04, 12:13    [817007]     Ответить | Цитировать Сообщить модератору
 Re: как получить ссылку на control, вызвавший событие %) (при том что он не активный)  [new]
____Дмитрий___
Guest
>Если вы перехватили событие - то вы уже знаете, от какого именно объекта >оно пришло. Так что изначальный вопрос смысла не имеет.
>Разумеется, это не относится к случаю, когда один и тот же обработчик >используется для обработки одного и того же события от нескольких >однотипных объектов.

т.е. все-таки имеет Ж) ? и ответ тоже, насколько я понял, имеется - нет. видимо разработчики тоже рассматривали вопрос как изначальный ж)
а вообще, по-моему, удобное решение - однотипные префиксы на контролы - и программная расстановка обработчиков.
а что касается подсветки ссылок - так вообще непонятно как-это в 2002ом аксесе они до сих пор для этого специальной кнопки не придумали..
21 июл 04, 13:41    [823884]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Access Ответить