Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.07.30;
Скачать: CL | DM;

Вниз

Определение нажатой кнопки   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.026 c
2-1152618826
Tort
2006-07-11 15:53
2006.07.30
Указатели или что?


3-1148640818
apl
2006-05-26 14:53
2006.07.30
Delphi и Fox


1-1150189912
Vir
2006-06-13 13:11
2006.07.30
Сравнение строк по маске.


3-1148377072
vigo_
2006-05-23 13:37
2006.07.30
Вопрос по компоненте TSimpleDataSet


3-1148374698
saxon
2006-05-23 12:58
2006.07.30
DBX files