Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Перехват всех Click-ов по кнопкам [D5, D7]


Страницы:   1 2

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


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо