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!!! |
|