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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.02.2009, 11:49   #1
Shafty
Новичок
Джуниор
 
Регистрация: 26.02.2009
Сообщений: 2
По умолчанию Обработка событий динамически созданных объектов в С++ Builder

Добрый день!
Подскажите, пожалуйста, возможное решение следующей проблемы...
Есть некая форма. На форме присутствует элемент TScrollBox. При нажатии на определённую кнопку на элементе ScrollBox динамически создаются элементы типа TLabel с описанием и кнопки для каждого из элемента. Количество этих композиций из кнопки и надписи заранее не известно, они берутся из базы. Их количество определяется только во время выполнения программы.
Проблема состоит в обработке события OnClick кнопок. Необходимо в обработчике события понять какая именно кнопка была нажата, допустим, её порядковый номер и, для простоты описания, в обработчике вызвать функцию ShowMessage() с аргументом равным порядковому номеру кнопки.
Вобщем конкретно необходимо понять какая именно кнопка была нажата и в зависимости от это выполнить необходимое действие.

Код:
	
        int const i_btn_count = 10;// количество элементов
	TButton *btn[i_btn_count];
	TLabel *lbl[i_btn_count];
	for (int i = 0; i < i_btn_count; i++)
	{
		// создание надписей
		lbl[i] = new TLabel(Application);
		lbl[i]->Parent = ScrollBox1;
		lbl[i]->Name = "label"+AnsiString(i);
                //lbl[i]->OnClick = f_lbl_click; ???
		lbl[i]->Caption = "caption "+AnsiString(i);
		lbl[i]->Top = i*60;
		lbl[i]->Left = 10;
		lbl[i]->Show();
		// создание кнопок к надписям
		btn[i] = new TButton(Application);
		btn[i]->Parent = ScrollBox1;
		btn[i]->Name = "button"+AnsiString(i);
                //btn[i]->OnClick = f_btn_click; ???
		btn[i]->Caption = "TODO "+AnsiString(i);
		btn[i]->Top = i*60+20;
		btn[i]->Left = 10;
		btn[i]->Height = 20;
		btn[i]->Width = 60;
		btn[i]->Show();
	}
описаны обработчики событий:
Код:
void __fastcall f_btn_click(TObject *Sender);
void __fastcall f_lbl_click(TObject *Sender);
Что в реализации писать не знаю... Буду благодарен за любую помощь.
Спасибо!
Shafty вне форума Ответить с цитированием
Старый 26.02.2009, 16:11   #2
Shafty
Новичок
Джуниор
 
Регистрация: 26.02.2009
Сообщений: 2
По умолчанию

Всем спасибо, ответ мне уже подсказали:
((TButton*)Sender)->Name
Shafty вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработка событий в C++ Builder BychkovVV Помощь студентам 3 02.03.2009 01:48
Обработка в Excel внешних событий pan Microsoft Office Excel 4 22.02.2009 17:26
Метка в динамически созданных пунктах MainMenu Alter Компоненты Delphi 4 30.06.2008 22:51
обработка событий из консоли! nereus Общие вопросы Delphi 0 07.02.2007 15:33