![]() |
|
|
![]()
|
|
| vmf18 |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 28.11.2007 Репутация: нет Всего: нет |
Даны 2 формы: Form1, Form2. На Form1 есть кнопка Button1 ведущая в Form2 . В Form2 динамически, при нажатии на Enter, создается новый компонент LabeledEdit. В Form2 имеется кнопка Button2 которая закрывает эту Form2. А теперь вопрос
Попытался сделать вот так вот, но ничего не получилось... Т.е. компоненты удалятся удаляются, но при повторном использовании Form2, компоненты не создаются...
Как исправить эту ошибку? Это сообщение отредактировал(а) vmf18 - 4.12.2007, 13:15 |
||||
|
|||||
| Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 18 Всего: 154 |
А что за Handle ты передаешь в конструктор? Туда нужно передавать указатель на родительский компонент. Удалять не надо, вместо этого удаляй Form2, NewLabeledEdit будет удален автоматически.
Еще можно использовать cв-во Visible компонента. |
|||
|
||||
| vmf18 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 28.11.2007 Репутация: нет Всего: нет |
А как удалять Form2? Я не знаю... Научите... |
|||
|
||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 167 Всего: 306 |
В данном случае методом Close()
|
|||
|
||||
| Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 18 Всего: 154 |
||||
|
||||
| mrbrooks |
|
||||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 167 Всего: 306 |
Так он же Form2 создает в проекте а не как
Поэтому не delete ни Free() в принципе и не нужно. Вот если бы он создавал не атоматически форму - то бишь в available forms тогда да. |
||||
|
|||||
| vmf18 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 28.11.2007 Репутация: нет Всего: нет |
Спасибо за совет! Ток где найти мне этого Архангельского? Не подскажешь? |
|||
|
||||
| vmf18 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 28.11.2007 Репутация: нет Всего: нет |
А куда этот Close вставлять? Разве не сюда: void __fastcall TForm2::Button2Click(TObject *Sender) { Form1->Close(); } Но так просто закрывается Form2... Почитал посты, да действительно, много постов по динамическому созданию компонентов, но, нужного мне нет... |
|||
|
||||
| orthrus |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 400 Регистрация: 30.10.2007 Где: г. Усть-Илимск(Ир кутская обл.) Репутация: 4 Всего: 16 |
При нажатии на тот Button1 который на Form1 и который просто показывает Form2? Если да то как компоненты создадутся если ты их уже удалил, снова нажимай на Enter чтобы все создать заново. -------------------- У того, кто ничего не делает, всегда много помощников.© Л.Н. Толстой ![]() |
|||
|
||||
| vmf18 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 28.11.2007 Репутация: нет Всего: нет |
:( Я так и делаю, но не выходит... |
|||
|
||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 167 Всего: 306 |
Ссылки на книги Архангельского есть в разделе "Книги" данного форума.
А что касается остального - так создание своей метки опиши в кнопке Button1 где вызываешь форму 2. По кнопке2 закрывай форму2. Она у тебя будет снова создоваться. А потомь навесь обработчик нажатой клавиши. |
|||
|
||||
| vmf18 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 28.11.2007 Репутация: нет Всего: нет |
Можете посмотреть мой проектик? Пжлста... Присоединённый файл ( Кол-во скачиваний: 6 )
_____.rar 5,20 Kb |
|||
|
||||
| Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 18 Всего: 154 |
Проблема в том, что ты пытаешься удалить элемент управления по имени, этого делать не стоит. Лучше заведи в классе формы указатель на него(или массив указателей) и удаляй его. Когда ты вызываешь деструктор FindLabeledEdit->~TObject(); то реально ничего не удаляется, просто выполняется код деструктора. Что-бы удалить компонент нужно сделать delete FindLabeledEdit .
Может тебе нужно не просто закрывать Form1 а удалять, и создавать динамически? Я не понял что ты вообще хотел этим кодом сделать, напиши понятно, что в каком порядке должно на форме появляться, и при каких условиях удаляться. Можно создать статически нужное количество компонентов, установить свойство Visible = false а потом показывать только нужные, keep it simple |
|||
|
||||
| vmf18 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 28.11.2007 Репутация: нет Всего: нет |
А Ты пробовал мой код компилировать? Порядок работы: 1) на форме0 пользователь выбирает какойто пункт, нажимает на кнопку1 появляется форма1 2) в форме1 пользователь вписывает в едит1 , едит2 и лайбледит0 свои числа, после нажатия на энтер, появляется новый лайбледедит1, потом еще один и еще, так они и будут появяться пока количество лайбеледитов не станет равным числу из едита1 3) пользователь нажимаеть на кнопке вычислить, и программа срабатывает так как мне нужно(в данном случае она находит число из лайбеледита i-го, а i-ое число, это число введенное в едит2) 4)пользователь нажимает на кнопку2 и эта форма закрывается, но если с формы0 опять зайти в форму1 то все созданные ранее лайбеледиты остаются не удаленными(в этом то вся и проблема) НАДЕЮСЬ ПОНЯТНО ИЗЛОЖИЛ... Это сообщение отредактировал(а) vmf18 - 6.12.2007, 14:05 |
|||
|
||||
| Lazin |
|
||||||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 18 Всего: 154 |
Файлы в архиве: 02.12.2007 23:00 6я409 func.h 06.12.2007 01:03 3я183 Project.cpp 03.12.2007 00:18 8я420 _00_.cpp 02.12.2007 23:38 3я720 _00_.h 06.12.2007 00:58 4я231 _01_.cpp 06.12.2007 00:58 1я346 _01_.h 05.12.2007 22:00 107 Инструкция.txt Как я это понял: ты хочешь что-бы, на форме 1 создавались динамически едиты, пользователь их заполнял-бы, происходи-ли-бы какие-то вычисления и форма вместе с едитами пропадала. При повторном открытии, что-бы там ничего не-было. Вообще для этого придумали стринг грид))
Добавлено через 3 минуты и 33 секунды пример того что я говорил про список компонентов: на форме 3 компонента: 1 TEdit - содержит число едитов которые нужно создать 2 кнопки btnClose - удаляет все динамически созданные компоненты btnAdd - создает компоненты динамически заголовочный файл:
код
|
||||||||||
|
|||||||||||
![]()
|
| Правила форума "С++ Builder" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C++ Builder | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |