Форум: "Начинающим";
Текущий архив: 2006.07.30;
Скачать: [xml.tar.bz2];
ВнизОпределение нажатой кнопки Найти похожие ветки
← →
rra © (2006-07-13 14:55) [0]Всем привет!
Есть две кнопки, выполняют по сути разные действия, но код отличается 3-мя строчками (так вот получается), а сама процедура порядка 50 строк.
Мои действия - создаю Action в ActionList и "завязываю" его с событием OnClick самих кнопок, но как определить какой именно кнопкой было вызвано Action?
Может можно как-то по другому реализовать сей алгоритм? Ну уж очень не хочется дублировать код, тем более, что таких пар кнопок 4шт.
← →
Elen © (2006-07-13 15:04) [1]На каждую кнопку посади одну и ту же процедуру OnClick и используй Sender . Он показывает какая кнопка нажата
← →
Vlad © (2006-07-13 15:06) [2]на событие Execute
if TAction(Sender).ActionComponent = Button1 then...
← →
rra © (2006-07-13 15:07) [3]Понял...спасибо
← →
Loginov Dmitry © (2006-07-13 15:07) [4]> "завязываю" его с событием OnClick самих кнопок, но как
> определить какой именно кнопкой было вызвано Action?
в событии OnExecute пишешь проверку:
if Sender is TButton then TButton(Sender).Caption := "Test!";
← →
Vlad © (2006-07-13 15:10) [5]
> Loginov Dmitry © (13.07.06 15:07) [4]
> в событии OnExecute пишешь проверку:
>
> if Sender is TButton
Sender там TAction
← →
Loginov Dmitry © (2006-07-13 15:15) [6]> Sender там TAction
Никак до конца не пойму, как вся эта технология работает? Вроде при присваении Action кнопке, у нее появляется обработчик OnClick, указывающий на OnExecute, а Sender кнопки не передается. Хитро придумано, однако :)
← →
Vlad © (2006-07-13 15:17) [7]
> Sender там TAction
Хотя сорри... автор на OnClick кнопки повесил OnExecute, тогда Sender будет кнопка (если свойство Action не заполнено)
← →
Loginov Dmitry © (2006-07-13 15:21) [8]> автор на OnClick кнопки повесил OnExecute, тогда Sender
> будет кнопка
OnExecute на OnClick вешается автоматически, поэтому Sender скорее всего будет TAction.
← →
rra © (2006-07-13 15:23) [9]внесу ясность (или неясность:) - свойство Action заполнено, при этом в Execute вставил предложенную Vlad"om [2] конструкцию и все отрабатывает корректно...
← →
Vlad © (2006-07-13 15:26) [10]
> 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]
теперь ясно
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.07.30;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.012 c