Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Как уничтожить форму


Автор: Нитонисе 28.12.2012, 13:36
Есть главная форма приложения Form1, на ней кнопка, которая создает две формы Form2 и Form3 и делает видимой Form2.  
Код

    Application->CreateForm(__classid(TForm2), &Form2);
    Application->CreateForm(__classid(TForm3), &Form3);
    Form2->Show();

Из формы Form2 я запускаю видимость Form3. 
Потом мне нужно закрыть и разрушить объекты Form2 и Form3. Пишу обработчик для события OnClose формы Form2
Код

Action = caFree;

Как мне в этом же обработчике уничтожить и Form3? 

Автор: artsb 28.12.2012, 13:56
Код

delete Form3;

?

Автор: mes 28.12.2012, 13:56
вариантов два :
  либо передать вызов, тому кто знает форм3
  либо форм2 получить указатель на форм3

Автор: artsb 28.12.2012, 13:58
И что за мода у людей создавать формы так:
Код

Application->CreateForm(__classid(TForm2), &Form2);

почему не:
Код

Form2 = new TForm2(this);

?

Добавлено через 43 секунды
Цитата(mes @  28.12.2012,  13:56 Найти цитируемый пост)
  либо передать вызов, тому кто знает форм3
  либо форм2 получить указатель на форм3

Цитата(Нитонисе @  28.12.2012,  13:36 Найти цитируемый пост)
Из формы Form2 я запускаю видимость Form3. 

Похоже есть указатель.

Автор: Нитонисе 28.12.2012, 14:10
artsbdelete Form3 не выходит. Или может я сужу не правильно. Я поставил в обработчик OnDestroy формы Form3 вывод сообщения ShowMessage("Destroy."). Так вот оно не появляется при закрытии Form2. Появляется только при закрытии Form1.

Цитата(artsb @  28.12.2012,  13:58 Найти цитируемый пост)
И что за мода у людей создавать формы так:

Сам билдер так делает.

Автор: artsb 28.12.2012, 14:34
У меня выдаёт сообщение.

Автор: Нитонисе 28.12.2012, 14:53
Цитата(artsb @  28.12.2012,  14:34 Найти цитируемый пост)
У меня выдаёт сообщение.

Ну вы совсем все по другому организовали. Я формы создаю методом по умолчанию.

Добавлено через 14 минут и 13 секунд
Проблема как всегда в невнимательности. Дело в том, что у меня в OnClose Form2 сначала идет запрос сохранения данных в файл и только потом разрушение форм. Так вот в диалоге сохранения данных я просто закрывал Form2 без уничтожения, поскольку в некоторых ветках применил оператор return. Из-за него то Form3 не разрушалась. Равно как и Form2.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)