Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Проблема с динамическим созданием компонентами

1.9K
29 июня 2005 года
Alex_N
37 / / 07.03.2003
Привет всем!
Есть код:
//////////////////////////////////////////
CB[1] = new TComboBox(GB[1]);
CB[1] -> Parent = GB[1];
CB[1] -> Text = "Пожалуйста выберите одно";
CB[1] -> Align = alNone;
CB[1] -> ItemIndex == 1;
CB[1]->Items->Add("Visa" );
CB[1]->Items->Add("MasterCard");
CB[1]->Items->Add ("Delta");
CB[1] -> Top = 64;
CB[1] -> Left = 104;
CB[1] -> Width = 185;
//////////////////////////////////////////
здесь создаю комбо бокс с тремя элементами

но дальше мне нужно условие выбора. Т.е. для Delta должен создаваться еще один Label дополнительно. Вот код:
if(CB[1]->ItemIndex == 2)
{
LB[5] = new TLabel(GB[1]);
LB[5] -> Parent = GB[1];
LB[5] -> Caption = "Дата открытия";
LB[5] -> Align = alNone;
LB[5] -> Top = 160;
LB[5] -> Left = 8;
LB[5] -> Width = 77;
}
Что ни так? Почему не создается? Объясните?
247
29 июня 2005 года
wanja
1.2K / / 03.02.2003
а в каком событии создается Label? Если в том же, что и ComboBox, там ведь условие не выполняется.
1.9K
29 июня 2005 года
Alex_N
37 / / 07.03.2003
Цитата:
Originally posted by wanja
а в каком событии создается Label? Если в том же, что и ComboBox, там ведь условие не выполняется.



Да, Label создается при том же событии что и СВ.
А на счёт условия создания - условие переключения в СВ на значение Дельта. Я так рассуждаю если он является третьим элементом в СВ (от 0 до 2) ItemIndex == 2, то значит это и может быть условием, при котором происходит событие создания Label. Или не так?
В принципе думаю, что сама проблема в том, что СВ является тоже динамическим на форме. Потому как выполняя теже самые вещи со статическими - результат верный.

4.2K
29 июня 2005 года
Крыс
98 / / 06.05.2005
Цитата:
Originally posted by Alex_N
Да, Label создается при том же событии что и СВ.
А на счёт условия создания - условие переключения в СВ на значение Дельта. Я так рассуждаю если он является третьим элементом в СВ (от 0 до 2) ItemIndex == 2, то значит это и может быть условием, при котором происходит событие создания Label. Или не так?
В принципе думаю, что сама проблема в том, что СВ является тоже динамическим на форме. Потому как выполняя теже самые вещи со статическими - результат верный.


а не пробовал точку остановки в билдере ставить, и смотретьна значения переменных?

488
29 июня 2005 года
Mоngооsе
465 / / 01.04.2005
Цитата:
Originally posted by Крыс
а не пробовал точку остановки в билдере ставить, и смотретьна значения переменных?

А для чего точка останова, если и без того ясно, что при создании Label CB[1]->ItemIndex==-1?

Скорей всего Label нужно создать без проверки CB[1]->ItemIndex==2, но с Visible==false.

4.2K
29 июня 2005 года
Крыс
98 / / 06.05.2005
Цитата:
Originally posted by Mоngооsе
А для чего точка останова, если и без того ясно, что при создании Label CB[1]->ItemIndex==-1?

Скорей всего Label нужно создать без проверки CB[1]->ItemIndex==2, но с Visible==false.


на всякий случай, можно много полезного увидеть, в том числе и "Visible==false"

488
29 июня 2005 года
Mоngооsе
465 / / 01.04.2005
Цитата:
Originally posted by Крыс
на всякий случай, можно много полезного увидеть, в том числе и "Visible==false"

Вообще-то ты права, но в данном случае,
написано CB[1] -> ItemIndex == 1;
и даже, если вместо сравнения было бы написано присвоение, itemindex==-1, так как во время присвоения ComboBox пуст.

4.2K
29 июня 2005 года
Крыс
98 / / 06.05.2005
Цитата:
Originally posted by Mоngооsе
Вообще-то ты права, но в данном случае,
написано CB[1] -> ItemIndex == 1;
и даже, если вместо сравнения было бы написано присвоение, itemindex==-1, так как во время присвоения ComboBox пуст.



Сори, код невнимательно смотрела
Возражения принимаются :)

1.9K
30 июня 2005 года
Alex_N
37 / / 07.03.2003
Цитата:
Originally posted by Mоngооsе
Вообще-то ты права, но в данном случае,
написано CB[1] -> ItemIndex == 1;
и даже, если вместо сравнения было бы написано присвоение, itemindex==-1, так как во время присвоения ComboBox пуст.



То что написано в первом куске: itemindex == 1.
Вообще никак не относится к проблеме. Путь хоть там то же itemindex == 2.

Попробовал создать Label и потом опустить его в Visible = false, но результат тот же. Не получается...(((

488
30 июня 2005 года
Mоngооsе
465 / / 01.04.2005
Цитата:
Originally posted by Alex_N
То что написано в первом куске: itemindex == 1.
Вообще никак не относится к проблеме. Путь хоть там то же itemindex == 2.

Попробовал создать Label и потом опустить его в Visible = false, но результат тот же. Не получается...(((

wanja уже писал, что условие if(CB[1]->ItemIndex == 2)
при создании Label не выполняется.

И что не получается?

Код
LB[5] = new TLabel(GB[1]);
LB[5] -> Parent = GB[1];
...
выполняется, но LB[5] не видно на форме?

1.9K
30 июня 2005 года
Alex_N
37 / / 07.03.2003
Цитата:
Originally posted by Mоngооsе
wanja уже писал, что условие if(CB[1]->ItemIndex == 2)
при создании Label не выполняется.

И что не получается?

Код
LB[5] = new TLabel(GB[1]);
LB[5] -> Parent = GB[1];
...
выполняется, но LB[5] не видно на форме?



Да

488
01 июля 2005 года
Mоngооsе
465 / / 01.04.2005
Цитата:
Originally posted by Alex_N
Да

Так или поставь breakpoint,как советовала Крыс, или временно напиши в код

if(CB[1]->ItemIndex == 2)
{
ShowMessage("label создана");
LB[5] = new TLabel(GB[1]);
...
...

если не появится сообщение, значит, метка вообще не создается.

А если не появится, значит что-то не то...

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог