Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.05.2013, 10:37   #1
Homa_1983
Пользователь
 
Регистрация: 14.10.2011
Сообщений: 29
По умолчанию Вызов обработчика события

Здравствуйте. Суть вопроса такова.
Есть следующий общий обработчик события:

Код:
void __fastcall TMyMainForm::LabeledEditKeyDown(TObject *Sender, WORD &Key, TShiftState Shift)

{
	if (Key == VK_RETURN) FindNextControl((TWinControl *) Sender, true, true, false) -> SetFocus();
}
Я хочу использовать его и для кнопки Add моей формы, но событие OnClick уже занято кодом другого обработчика. Могу ли я вызвать интересующий меня обработчик как функцию из обработчика события OnClick. Что-то типа того:

Код:
void __fastcall TMyMainForm::AddButtonClick(TObject *Sender)
{
//      Код обработчика AddButtonClick...
        LabeledEditKeyDown(...);
}
И что тогда передавать в качестве параметров Sender, Key, Shift???
Спасибо.
Homa_1983 вне форума Ответить с цитированием
Старый 20.05.2013, 10:52   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
void __fastcall TMyMainForm::AddButtonClick(TObject *Sender)
{
//      Код обработчика AddButtonClick...
        WORD k=0;
        TShiftState Shift;
        LabeledEditKeyDown(Sender,k,Shift);
}
Единственно что я не знаю как в билдере инициализировать Shift.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.05.2013, 11:02   #3
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
Код:
if (Key == VK_RETURN) FindNextControl((TWinControl *) Sender, true, true, false) -> SetFocus();
Я хочу использовать его и для кнопки Add моей формы,
=== Я хочу при(после) нажатии на кнопку Add перевести фокус на ...

Так и переводите focus напрямую в обработчике AddButtonClick
Код:
void __fastcall TMyMainForm::AddButtonClick(TObject *Sender)
.....
xxx->Setfocus();
....
используйте там любые нужные (и доступные) вам объекты/методы.
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 20.05.2013 в 11:06.
evg_m на форуме Ответить с цитированием
Старый 20.05.2013, 11:45   #4
Homa_1983
Пользователь
 
Регистрация: 14.10.2011
Сообщений: 29
По умолчанию

Именно так я пока и сделал.
Homa_1983 вне форума Ответить с цитированием
Старый 20.05.2013, 11:48   #5
Homa_1983
Пользователь
 
Регистрация: 14.10.2011
Сообщений: 29
По умолчанию

Цитата:
Так и переводите focus напрямую в обработчике AddButtonClick
Именно так я пока и сделал.
Homa_1983 вне форума Ответить с цитированием
Старый 20.05.2013, 12:43   #6
Homa_1983
Пользователь
 
Регистрация: 14.10.2011
Сообщений: 29
По умолчанию

Но мой вопрос остается в силе
Homa_1983 вне форума Ответить с цитированием
Старый 20.05.2013, 14:43   #7
FataLL
Форумчанин
 
Аватар для FataLL
 
Регистрация: 29.01.2013
Сообщений: 319
По умолчанию

Надо имитировать нажатие Enter?
Код:
WORD k = VK_RETURN;
TShiftState Shift;
LabeledEditKeyDown( Sender, k, Shift );
FataLL вне форума Ответить с цитированием
Старый 20.05.2013, 17:09   #8
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
=== Я хочу при(после) нажатии на кнопку Add перевести фокус на ...
Цитата:
Но мой вопрос остается в силе
значит не совсем то. А если так:
я хочу в нескольких разных обработчиках выполнять одинаковые(аналогичные) действия.

1. пишем процедуру(функцию/метод) с НУЖНЫМИ параметрами и выполняющую требуемые (общие) действия.
2. в нужных обработчиках ВЫЗЫВАЕМ написанную в п.1 процедуру с требуемыми значениями.

требование(желание) вызвать обработчик из другого обработчика напоминает
X,Y,Z
программа — запись алгоритма на языке понятном транслятору
evg_m на форуме Ответить с цитированием
Старый 20.05.2013, 17:20   #9
Homa_1983
Пользователь
 
Регистрация: 14.10.2011
Сообщений: 29
По умолчанию

Огромное всем спасибо! Разобрался.
Homa_1983 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание обработчика события от DataGridView Farrel Windows Forms 0 06.10.2011 00:58
Выход из обработчика события tools Visual C++ 1 20.12.2010 10:24
Динамическое создание обработчика события tramvajman Компоненты Delphi 8 20.10.2010 10:41
Назначение обработчика события Gypsy Общие вопросы Delphi 2 22.12.2009 09:50
динамическое создание обработчика события Мэс Общие вопросы Delphi 4 07.09.2009 01:04