Главная страница
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.043 c
2-1152561496
Mr tray
2006-07-10 23:58
2006.07.30
keybd_event


2-1152106048
ламер_13
2006-07-05 17:27
2006.07.30
как из $4d4d получить MM


2-1152177215
!!!!!
2006-07-06 13:13
2006.07.30
Память


2-1152766669
Neket
2006-07-13 08:57
2006.07.30
Проблема с переносимостью программы


15-1151252872
Petr V. Abramov
2006-06-25 20:27
2006.07.30
Какие же химеры живут в Подмосковье... )