C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Вызов событий программно, созданных компонентов
T@rEn
Отправлено: 15.01.2007, 20:52


Ученик-кочегар

Группа: Участник
Сообщений: 18



Доброе время суток !!!

Помогите пожалуйста !!!

Создаю программно компонент, например:

CODE

TComboBox *ed = new TComboBox;
Ed->Name="aa";
...
....


При работе с этим компонентом необходимо отловить событие на нем, например "onChange". Как это можно сделать?

Заранее благодарен !!!
Doga
Отправлено: 15.01.2007, 22:42


Мастер участка

Группа: Участник
Сообщений: 575



А почему нельзя это делать в самом "onChange"?
Tantos
Отправлено: 16.01.2007, 02:18


Станционный диспетчер

Группа: Участник
Сообщений: 108



Напиши обработку этого события, т.е. типа этого:
CODE

void __fastcall TfrmMain::EdChange(TObject *Sender)
{
//обработка
}

А потом присваиваешь обработчик события:
CODE

ed->OnChange = &EdChange;
T@rEn
Отправлено: 17.01.2007, 11:17


Ученик-кочегар

Группа: Участник
Сообщений: 18



Спасибо, помогло!!!

Делаю следующее
в файле Form1.h
CODE

......
void __fastcall ListView1Change(TObject *Sender, TListItem *Item,
         TItemChange Change);
void __fastcall NComBoChange(TObject *Sender);
.....


в файле Form1.cpp
CODE

...
void __fastcall TForm1::ListView1Change(TObject *Sender, TListItem *Item,
     TItemChange Change)
{
...
TComboBox *NComBo = new TComboBox(this);
 NComBo->Parent = this;
.....
....
NComBo->Style = csDropDown;
NComBo->OnChange = &NComBoChange;
...
}

....
void __fastcall TForm1::NComBoChange(TObject *Sender)
{
// проверка
// if (NComBo->Style==csSimple) return;
  ShowMessage("Helloy");
}
...


Вопрос: как произвести проверку условия (закоментированный кусок) как в приведенном коде, в событии NComBoChange. В таком виде Builder ругается.

Заранее благодарен !!!
Valdemar
Отправлено: 17.01.2007, 11:48


Мастер участка

Группа: Участник
Сообщений: 433



По моему, правильно писать
NComBo->OnChange = NComBoChange;
а не
NComBo->OnChange = &NComBoChange;
AVC
Отправлено: 17.01.2007, 12:26


Ветеран

Группа: Модератор
Сообщений: 1583



QUOTE

как произвести проверку условия (закоментированный кусок)

CODE

void __fastcall TForm1::NComBoChange(TObject *Sender)
{
TComboBox *cmb = dynamic_cast<TComboBox *>(Sender);
if (!cmb) return;
...
// проверка
if (cmb->Style==csSimple) return;

ShowMessage("Helloy");
}

T@rEn
Отправлено: 17.01.2007, 12:27


Ученик-кочегар

Группа: Участник
Сообщений: 18



Работает и так, и так.

Вопрос в другом. Builder ругается на неизвестный символ "NComBo". Понятно что в функции компонент NComBo не определен, и не определен в заголовочном файле.

Мне необходимо в процедуре, выполняемой при событии на, "динамически" (в Run-time) созданном объекте, обращаться к свойствам этого объекта.
T@rEn
Отправлено: 17.01.2007, 12:39


Ученик-кочегар

Группа: Участник
Сообщений: 18



Все, работает.
Всем спасибо !
Отдельное — AVC!!!

Вернуться в Вопросы программирования в C++Builder