Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/11: Рейтинг темы: голосов - 11, средняя оценка - 5.00
-26 / 3 / 0
Регистрация: 20.03.2011
Сообщений: 102
1

Как закрыть форму с очисткой памяти?

18.07.2013, 14:47. Показов 2115. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
У меня есть Form4. Там проходит тест. После того как тест пройден, например, эту форму закрыли. Затем из формы3 заново открыли форму4. Теперь там только результаты теста. А надо, чтобы тест проходил еще раз. как при первом открытии этой формы.

Что делать?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.07.2013, 14:47
Ответы с готовыми решениями:

Как закрыть форму
как зделать чтобы при нажатии на кнопку закрывалась программа(если конкретние то на Panel)

Как закрыть форму с клавиатуры
Может подскажите какрыть форму с клавиатуры. С главной формы запускаю форму TfrProsmLiz, нужно ее...

Закрыть форму и открыть форму
Как закрыть не главную форму и запустить заново с ее начальным состоянием. Поясню. В Form2 у...

Закрыть форму(не главную)
Собственно на главной форме создается другая(использую как меню)...

10
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32991 / 21297 / 8180
Регистрация: 22.10.2011
Сообщений: 36,591
Записей в блоге: 8
18.07.2013, 14:50 2
Убери форму из автосоздания, и в обработчике OnClose формы присвой Action значение caFree (вместо дефолтного caHide, который просто скрывает, а не удаляет форму). Теперь при закрытии форма будет удаляться. Перед показом - каждый раз создавай ее...
0
Практикантроп
4840 / 2725 / 533
Регистрация: 23.09.2011
Сообщений: 5,795
18.07.2013, 14:50 3
Цитата Сообщение от Morgan-S23 Посмотреть сообщение
У меня есть Form4. Там проходит тест. После того как тест пройден, например, эту форму закрыли. Затем из формы3 заново открыли форму4. Теперь там только результаты теста. А надо, чтобы тест проходил еще раз. как при первом открытии этой формы.

Что делать?
Значит, форму не закрыли, а сделали невидимой. Если б над ней поработал деструктор, ее из формы 3 пришлось бы наново создавать и никаких результатов теста там не было бы... .
0
-26 / 3 / 0
Регистрация: 20.03.2011
Сообщений: 102
18.07.2013, 15:16  [ТС] 4
Цитата Сообщение от UI Посмотреть сообщение
Убери форму из автосоздания, и в обработчике OnClose формы присвой Action значение caFree (вместо дефолтного caHide, который просто скрывает, а не удаляет форму). Теперь при закрытии форма будет удаляться. Перед показом - каждый раз создавай ее...
я так и сделал, но при повторном открытии возникает ошибка

Добавлено через 2 минуты
Цитата Сообщение от nick42 Посмотреть сообщение
Значит, форму не закрыли, а сделали невидимой. Если б над ней поработал деструктор, ее из формы 3 пришлось бы наново создавать и никаких результатов теста там не было бы... .
есть примеры?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32991 / 21297 / 8180
Регистрация: 22.10.2011
Сообщений: 36,591
Записей в блоге: 8
18.07.2013, 15:18 5
Цитата Сообщение от Morgan-S23 Посмотреть сообщение
при повторном открытии возникает ошибка
в случае, если перед этим открытием форма не была создана. Еще раз: из автосоздания убрать, создавать перед показом. Как создаешь - код в студию...
0
-26 / 3 / 0
Регистрация: 20.03.2011
Сообщений: 102
18.07.2013, 15:29  [ТС] 6
Цитата Сообщение от UI Посмотреть сообщение
в случае, если перед этим открытием форма не была создана. Еще раз: из автосоздания убрать, создавать перед показом. Как создаешь - код в студию...
я не очень вас понял. Что там код - вот весь проект.

Путь: на главной форме нажать на "Системы счисления", затем на первую же кнопку "Из двоичной в десятичную", потом "проверить себя". Вот эта форма и является формой4. Буду очень признателен, если вы мне поможете
0
Практикантроп
4840 / 2725 / 533
Регистрация: 23.09.2011
Сообщений: 5,795
18.07.2013, 15:30 7
Цитата Сообщение от Morgan-S23 Посмотреть сообщение
есть примеры?
C++
1
2
3
4
5
6
void __fastcall TForm1::Button2Click(TObject *Sender)
{
   if (!Form2) Application->CreateForm(__classid(TForm2), &Form2);
   Form2->ShowModal();
   delete Form2; Form2=NULL;
}
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32991 / 21297 / 8180
Регистрация: 22.10.2011
Сообщений: 36,591
Записей в блоге: 8
18.07.2013, 15:36 8
Цитата Сообщение от Morgan-S23 Посмотреть сообщение
я не очень вас понял.
Я тоже. Почему у меня все работает. Я, конечно, опять неправильно что-то делаю?

Первая форма:
C++
1
2
3
4
5
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    Form2 = new TForm2(Application);
    Form2->Show();
}
Вторая форма:
C++
1
2
3
4
void __fastcall TForm2::FormClose(TObject *Sender, TCloseAction &Action)
{
    Action = caFree;
}
Проект:
C++
1
2
3
4
5
6
7
8
9
10
11
    try
    {
        Application->Initialize();
        Application->MainFormOnTaskBar = true;
        Application->CreateForm(__classid(TForm1), &Form1);
        Application->Run();
    }
    catch (Exception &exception)
    {
        Application->ShowException(&exception);
    }
0
-26 / 3 / 0
Регистрация: 20.03.2011
Сообщений: 102
18.07.2013, 15:38  [ТС] 9
Цитата Сообщение от UI Посмотреть сообщение
Я тоже. Почему у меня все работает. Я, конечно, опять неправильно что-то делаю?

Первая форма:
C++
1
2
3
4
5
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    Form2 = new TForm2(Application);
    Form2->Show();
}
Вторая форма:
C++
1
2
3
4
void __fastcall TForm2::FormClose(TObject *Sender, TCloseAction &Action)
{
    Action = caFree;
}
Проект:
C++
1
2
3
4
5
6
7
8
9
10
11
    try
    {
        Application->Initialize();
        Application->MainFormOnTaskBar = true;
        Application->CreateForm(__classid(TForm1), &Form1);
        Application->Run();
    }
    catch (Exception &exception)
    {
        Application->ShowException(&exception);
    }
вы 4 форму открывали? Если ее закрыть и заново открыть, возникает ошибка.

Можете в коде сразу написать
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32991 / 21297 / 8180
Регистрация: 22.10.2011
Сообщений: 36,591
Записей в блоге: 8
18.07.2013, 15:41 10
Цитата Сообщение от Morgan-S23 Посмотреть сообщение
вы 4 форму открывали? Если ее закрыть и заново открыть, возникает ошибка.
У меня НЕТ четвертой формы, у меня есть первая и вторая. Первая - это та, где нажимается кнопка, чтобы открыть вторую, а вторая - та, которая открывается. Какая разница, четвертая, вторая, 126-я, 10998-я? Алгоритм - один и тот же всегда: создал, показал, при закрытии - очистил.

Добавлено через 57 секунд
Цитата Сообщение от Morgan-S23 Посмотреть сообщение
Можете в коде сразу написать
А то, что я написал - это так, поэма какая-то, кода совсем не привел я разве? А может, это не мне надо, коды-то приводить? Все-таки, проблема не у меня? Или это я пришел на форум, чтобы просить о помощи?
0
-26 / 3 / 0
Регистрация: 20.03.2011
Сообщений: 102
18.07.2013, 15:56  [ТС] 11
Цитата Сообщение от UI Посмотреть сообщение
У меня НЕТ четвертой формы, у меня есть первая и вторая. Первая - это та, где нажимается кнопка, чтобы открыть вторую, а вторая - та, которая открывается. Какая разница, четвертая, вторая, 126-я, 10998-я? Алгоритм - один и тот же всегда: создал, показал, при закрытии - очистил.

Добавлено через 57 секунд
А то, что я написал - это так, поэма какая-то, кода совсем не привел я разве? А может, это не мне надо, коды-то приводить? Все-таки, проблема не у меня? Или это я пришел на форум, чтобы просить о помощи?
ладно, извините. Спасибо.
Просто надо быстро все сделать, а я еще голову поломаю над этим
0
18.07.2013, 15:56
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.07.2013, 15:56
Помогаю со студенческими работами здесь

Закрыть модальную форму
Столкнулся со следующей проблемой. У меня в проекте есть главная форма, с которой я по кнопке...

Закрыть главную форму
Есть 2 формы - Form1(главная), Form2. (создаются в AutoCreate). ПРи нажатии на кнопку на форме1,...

Закрыть модальную форму изнутри
Поясню, откуда взялся такой вопрос. Создаются некие картинки (каждая соответствует месяцу), эти...

Вы уверены , что хотите закрыть форму?
Такое дело. Когда юзер скрывает форму (OnHide), нам нужно отобразить MessageBox с текстом...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru