![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Перехват всех Click-ов по кнопкам [D5, D7]
YaMaximus © (2004-08-20 16:35:00)Есть проект, в котором штук 200 форм, на них разные
кнопочки (TRxSpeedButton) в событиях OnClick которых идет определенная обработка.
Как перехватить все эти клики и узнать имя кнопки, по которой
клацнули.
Есть конечно возможность перехвата всех событий через
Application.OnMessage или WndProc, но там я не узнаю имя кнопки.
Может кто-нибудь подскажет идейку.
Заранее благодарен.
Mim1 (2004-08-20 18:04:00) [21]
> FindControl + GetCursorPos
Мне кажется что GetCursorPos может не сработать, так как на момент выборки сообщения из очереди и обработки его, курсор может быть совсем в другом месте. Лучше воспользоватья предудущесохраненных положением от mousedown.
s999 (2004-08-20 17:49:00) [22]
> Пройдет и для графики, если дополнительно вызвать ControlAtPos.
Если так, то да, только тяжеловато немного будет, ControlAtPos - рекурсивная.
> но мне надо узнать имя кнопки не в OnClick, а в процедуре
Задача стоит ТОЛЬКО для TRxSpeedButton? Если так, то проще всего подправить исходники RX, добавив проверки, и пересобрать.
nikkie (2004-08-20 17:33:00) [23]>Как перехватить все эти клики и узнать имя кнопки, по которой клацнули.
написать потомка этой кнопки.
Юрий Зотов (2004-08-20 17:22:00) [24]> s999 (20.08.04 17:11) [3]
Пройдет и для графики, если дополнительно вызвать ControlAtPos.
> YaMaximus (20.08.04 17:12) [4]
Application.OnMessage, а там:
FindControl + GetCursorPos + ScreenToClient + ControlAtPos
YaMaximus (2004-08-20 17:12:00) [25]Да, но мне надо узнать имя кнопки не в OnClick, а в процедуре,
через которую должны проходить все OnClick в программе
(иначе мне прийдется во всех 200 формах переписывать событие OnClick).
Вообще задача стоит в определении в момент
"клика" по кнопке - есть ли у пользователя право на данное действие. Т.е. процедура перехвата определяет имя кнопки, определяет по этому имени права доступа и если таких
прав нету - посылает пользователя. Только как эту процедуру написать?
s999 (2004-08-20 17:11:00) [26]
> Там есть хэндл кнопки, а далее - FindControl с проверкой
> на is TButton.
Не знаю как TRxSpeedButton, но TSpeedButton от TControl, минуя TWinControl, поэтому не пройдет.
Юрий Зотов (2004-08-20 17:06:00) [27]> но там я не узнаю имя кнопки.
Там есть хэндл кнопки, а далее - FindControl с проверкой на is TButton.
VMcL (2004-08-20 16:57:00) [28]>> YaMaximus (20.08.04 16:35)
> узнать имя кнопки, по которой
клацнули
Sender: TObject