Проблема с динамическим созданием компонентами
Есть код:
//////////////////////////////////////////
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;
}
Что ни так? Почему не создается? Объясните?
а в каком событии создается Label? Если в том же, что и ComboBox, там ведь условие не выполняется.
Да, Label создается при том же событии что и СВ.
А на счёт условия создания - условие переключения в СВ на значение Дельта. Я так рассуждаю если он является третьим элементом в СВ (от 0 до 2) ItemIndex == 2, то значит это и может быть условием, при котором происходит событие создания Label. Или не так?
В принципе думаю, что сама проблема в том, что СВ является тоже динамическим на форме. Потому как выполняя теже самые вещи со статическими - результат верный.
Да, Label создается при том же событии что и СВ.
А на счёт условия создания - условие переключения в СВ на значение Дельта. Я так рассуждаю если он является третьим элементом в СВ (от 0 до 2) ItemIndex == 2, то значит это и может быть условием, при котором происходит событие создания Label. Или не так?
В принципе думаю, что сама проблема в том, что СВ является тоже динамическим на форме. Потому как выполняя теже самые вещи со статическими - результат верный.
а не пробовал точку остановки в билдере ставить, и смотретьна значения переменных?
а не пробовал точку остановки в билдере ставить, и смотретьна значения переменных?
А для чего точка останова, если и без того ясно, что при создании Label CB[1]->ItemIndex==-1?
Скорей всего Label нужно создать без проверки CB[1]->ItemIndex==2, но с Visible==false.
А для чего точка останова, если и без того ясно, что при создании Label CB[1]->ItemIndex==-1?
Скорей всего Label нужно создать без проверки CB[1]->ItemIndex==2, но с Visible==false.
на всякий случай, можно много полезного увидеть, в том числе и "Visible==false"
на всякий случай, можно много полезного увидеть, в том числе и "Visible==false"
Вообще-то ты права, но в данном случае,
написано CB[1] -> ItemIndex == 1;
и даже, если вместо сравнения было бы написано присвоение, itemindex==-1, так как во время присвоения ComboBox пуст.
Вообще-то ты права, но в данном случае,
написано CB[1] -> ItemIndex == 1;
и даже, если вместо сравнения было бы написано присвоение, itemindex==-1, так как во время присвоения ComboBox пуст.
Сори, код невнимательно смотрела
Возражения принимаются :)
Вообще-то ты права, но в данном случае,
написано CB[1] -> ItemIndex == 1;
и даже, если вместо сравнения было бы написано присвоение, itemindex==-1, так как во время присвоения ComboBox пуст.
То что написано в первом куске: itemindex == 1.
Вообще никак не относится к проблеме. Путь хоть там то же itemindex == 2.
Попробовал создать Label и потом опустить его в Visible = false, но результат тот же. Не получается...(((
То что написано в первом куске: 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] не видно на форме?
wanja уже писал, что условие if(CB[1]->ItemIndex == 2)
при создании Label не выполняется.
И что не получается?
Код
LB[5] = new TLabel(GB[1]);
LB[5] -> Parent = GB[1];
...
выполняется, но LB[5] не видно на форме?
Да
Да
Так или поставь breakpoint,как советовала Крыс, или временно напиши в код
if(CB[1]->ItemIndex == 2)
{
ShowMessage("label создана");
LB[5] = new TLabel(GB[1]);
...
...
если не появится сообщение, значит, метка вообще не создается.
А если не появится, значит что-то не то...