Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
2-1152179578
Crazy monkey
2006-07-06 13:52
2006.07.30
Как добавить данные в dblistbox?


3-1148383580
vigo_
2006-05-23 15:26
2006.07.30
Вопрос по компоненте TSimpleDataSet


2-1152258778
Homo Sapiens
2006-07-07 11:52
2006.07.30
Открыть с помощью...


2-1152603329
levin_610
2006-07-11 11:35
2006.07.30
registraciia servisov


15-1151745887
homm
2006-07-01 13:24
2006.07.30
HTML: Опять эксплорер тупит





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский