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

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

Определение нажатой кнопки [D6, XP]


rra ©   (2006-07-13 14:55:00) 

Всем привет!
Есть две кнопки, выполняют по сути разные действия, но код отличается 3-мя строчками (так вот получается), а сама процедура порядка 50 строк.
Мои действия - создаю Action в ActionList и "завязываю" его с событием OnClick самих кнопок, но как определить какой именно кнопкой было вызвано Action?
Может можно как-то по другому реализовать сей алгоритм? Ну уж очень не хочется дублировать код, тем более, что таких пар кнопок 4шт.


Vlad   (2006-07-13 15:26:00) [1]


> Loginov Dmitry ©   (13.07.06 15:21) [8]
> > автор на OnClick кнопки повесил OnExecute, тогда Sender
>
> > будет кнопка
>
>
> OnExecute на OnClick  вешается автоматически, поэтому Sender
> скорее всего будет TAction.

Это понятно, я имел ввиду если св-во Action не заполнять, а просто на OnClick повесить OnExecute Action-a, тогда Sender будет 100% кнопка.
(а в изначальном вопросе неясно, толи он Action прицепил, толи нет)


> rra ©   (13.07.06 15:23) [9]

теперь ясно


rra   (2006-07-13 15:23:00) [2]

внесу ясность (или неясность:) - свойство Action заполнено, при этом в Execute вставил предложенную Vlad'om [2] конструкцию и все отрабатывает корректно...


Loginov Dmitry   (2006-07-13 15:21:00) [3]

> автор на OnClick кнопки повесил OnExecute, тогда Sender
> будет кнопка


OnExecute на OnClick  вешается автоматически, поэтому Sender скорее всего будет TAction.


Vlad   (2006-07-13 15:17:00) [4]


> Sender там TAction


Хотя сорри... автор на OnClick кнопки повесил OnExecute, тогда Sender будет кнопка (если свойство Action не заполнено)


Loginov Dmitry   (2006-07-13 15:15:00) [5]

> Sender там TAction


Никак до конца не пойму, как вся эта технология работает? Вроде при присваении Action кнопке, у нее появляется обработчик OnClick, указывающий на OnExecute, а Sender кнопки не передается. Хитро придумано, однако :)


Vlad   (2006-07-13 15:10:00) [6]


> Loginov Dmitry ©   (13.07.06 15:07) [4]


> в событии OnExecute пишешь проверку:
>
> if Sender is TButton

Sender там TAction


rra   (2006-07-13 15:07:00) [7]

Понял...спасибо


Loginov Dmitry   (2006-07-13 15:07:00) [8]

> "завязываю" его с событием OnClick самих кнопок, но как
> определить какой именно кнопкой было вызвано Action?

в событии OnExecute пишешь проверку:

if Sender is TButton then TButton(Sender).Caption := 'Test!';


Vlad   (2006-07-13 15:06:00) [9]

на событие Execute
if TAction(Sender).ActionComponent = Button1 then...


Elen   (2006-07-13 15:04:00) [10]

На каждую кнопку посади одну и ту же процедуру OnClick и используй Sender . Он показывает какая кнопка нажата


Наверх

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