![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Определение нажатой кнопки [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 . Он показывает какая кнопка нажата