Главная страница
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.027 c
15-1151075086
Megabyte
2006-06-23 19:04
2006.07.30
Ускорение запросов


15-1152048123
Германн
2006-07-05 01:22
2006.07.30
Как получить список файлов стандартными методами Windows


15-1151646510
Иксик
2006-06-30 09:48
2006.07.30
Красиво


2-1152271204
Crazy monkey
2006-07-07 15:20
2006.07.30
2 Вопроса по TreeView


15-1151671936
Mr tray
2006-06-30 16:52
2006.07.30
Windows NT