Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.81/74: Рейтинг темы: голосов - 74, средняя оценка - 4.81
3 / 3 / 0
Регистрация: 13.02.2010
Сообщений: 33
1

Вызов обработчика события.

02.03.2010, 08:09. Показов 13419. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Можно ли из одного обработчика события, например:

C++
1
2
3
4
5
void __fastcall TForm1::Button1Click(TObject *Sender)
{
//Код обработчика Button1;
//Вызов: void __fastcall TForm1::cbGndClick(TObject *Sender)?;
}
вызвать другой, например:

C++
1
2
3
4
void __fastcall TForm1::cbGndClick(TObject *Sender)
{
//Код обработчика  cbGnd 
}
и как это сделать? Какое значение должен принимать указатель *Sender? Или содержимое обработчика оформить функцией которую вызывать в разных обработчиках?
Заранее благодарен.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.03.2010, 08:09
Ответы с готовыми решениями:

Создание обработчика события
Пытаюсь создатьобработчик события для динамически созданного элемента. В unit.cpp void __fastcall...

Функция внутри обработчика события?
Что я сделал не так почему выдает ошибку? void __fastcall...

Создание собственного обработчика события
Есть компонент с TStringList, как добавить в этот компонент собственный обработчик события? К...

Вызов обработчика StringGrid1DrawCell
помогите пожалуйста нужна помощь в вызове функции StringGrid1DrawCell, или хотя бы ответе это...

10
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
02.03.2010, 08:56 2
Если правильно я тебя понял
C++
1
2
3
4
5
6
7
8
9
10
11
12
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Код обработчика Button1;
 cbGndClick(Sender);
}
 
вызвать другой, например:
 
void __fastcall TForm1::cbGndClick(TObject *Sender)
{
Код обработчика cbGnd 
}
0
Супер-модератор
8783 / 2536 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
02.03.2010, 09:01 3
C++
1
2
3
4
5
void __fastcall TForm1::Button1Click(TObject *Sender)
 {
 //Код обработчика Button1;
 cbGndClick(Sender); // можно так вызвать
 }
1
3 / 3 / 0
Регистрация: 13.02.2010
Сообщений: 33
02.03.2010, 21:06  [ТС] 4
ОГРОМНОЕ Спасибо!
0
fmm
24.03.2010, 04:30 5
Цитата Сообщение от Lord_Voodoo Посмотреть сообщение
C++
1
2
3
4
5
void __fastcall TForm1::Button1Click(TObject *Sender)
 {
 //Код обработчика Button1;
 cbGndClick(Sender); // можно так вызвать
 }
Усложняем задачу:
Есть кнопка - Caption к примеру "А".
Есть RichEdit1 - с обработчиком события Edit1KeyPress(TObject *Sender, wchar_t &Key)
Как при нажатии кнопки "А" генерировать ПОЛНОЦЕННОЕ СОБЫТИЕ с передачей значения
*((ButtonA->Caption).w_str()) в параметр &Key.
Т.е. в RichEdit1 должен добавиться символ 'A' словно так, как это было бы при нажатии клавиши "А" на клавиатуре, с фокусом в RichEdit1.
Супер-модератор
8783 / 2536 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
24.03.2010, 09:31 6
берем 3 кнопки с Caption A, B, C... назначаем им событие OnClick, а в нем:
C++
1
2
3
4
5
void __fastcall TMainForm::Button1Click(TObject *Sender)
{
   RichEdit1->Lines->Add(((TButton*)Sender)->Caption);
 
}
после нажатия будет появляться новая строка с буквой из Caption...
0
1090 / 588 / 121
Регистрация: 11.11.2008
Сообщений: 1,544
24.03.2010, 09:55 7
Цитата Сообщение от Lord_Voodoo Посмотреть сообщение
после нажатия будет появляться новая строка с буквой из Caption...
что совершенно не требуется.
fmm спрашивает как послать рич-едиту сообщение о якобы нажатии клавиши и передать в качестве кода клавиши символ из кэпшна баттона.

LRESULT SendMessage( HWNO hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
0
Супер-модератор
8783 / 2536 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
24.03.2010, 10:06 8
AntonChik, а мой код не Caption добавляет в RichEdit? пусть обозначит задание полностью, тогда будет видно, как это лучше реализовать, а сидеть и спорить с Вами, кто из нас лучше угадает его пожелания - мне лень, если честно...
Цитата Сообщение от AntonChik Посмотреть сообщение
что совершенно не требуется. fmm спрашивает как послать рич-едиту сообщение о якобы нажатии клавиши и передать в качестве кода клавиши символ из кэпшна баттона.
вам не кажется, что вы сами себе противоречите?

тем более ваше сообщение все равно надо вешать на какое-нить событие... покажите вашу реализацию...
0
1090 / 588 / 121
Регистрация: 11.11.2008
Сообщений: 1,544
24.03.2010, 10:20 9
Т.е. в RichEdit1 должен добавиться символ 'A' словно так, как это было бы при нажатии клавиши "А" на клавиатуре, с фокусом в RichEdit1.
по-моему всё весьма прозрачно.
так что если уж на то пошло, то корректней было бы написать:
Код
RichEdit1->Text=RichEdit1->Text+(((TButton*)Sender)->Caption);
а вообще это должно выглядеть примерно так

Код
SendMessage( RichEdit1->Handle, WM_PRESSKEY, ((TButton*)Sender)->Caption[1], 0);
в общем что то в этом духе, я не знаток WinAPI...
0
Супер-модератор
8783 / 2536 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
24.03.2010, 10:26 10
AntonChik, ну вообще решения готового я и не собирался выдавать, а разве что направить человека, пусть сам думает...
1
fmm
24.03.2010, 18:42 11
Цитата Сообщение от AntonChik Посмотреть сообщение
RichEdit1->Text=RichEdit1->Text+(((TButton*)Sender)->Caption);
Всем спасибо за внимание. Суть дела в том, что решение "РичЕдит1-Текст += Батон->Капшион" не решает проблемы а создает еще больше проблем: к примеру, что будет, если курсор находится где-нибудь в середине текста? Результат такого решения - громоздкий код в стиле "изобрели а - ля вилосипед". За наводку на метод СендМесседж() - огромное спасибо.
24.03.2010, 18:42
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.03.2010, 18:42
Помогаю со студенческими работами здесь

Присоединение обработчика события к динамическому массиву контролов
Создаём массив кнопок TButton *btn; //.... void __fastcall TForm1::FormShow(TObject *Sender) {...

Создание обработчика события Onclick с дополнительными парметрами
Всем привет. Есть дочерний класс от TPanel. И для него потребовалось создать обработчик OnClick с...

Вызов события на обработку
Может кто подсказать как правильно вызвать событие. На форме имеется: ComboBox, DBGrid. В...

Вызов события OnChange программно
Есть 10 компонентов хот-кеив, хочу вызвать события OnChange у всех. Всем присвоил тег 1 Такой...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru