Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как сделать, чтобы она форма закрвалась, а вторая появлялась. [D5, WinME]


Zolotov ©   (2002-12-15 15:20:00) 

У меня 3 формы. MainForm и 2 дополнительные, на каждой форме по 2 кнопки. MainForm всегда открыта. При нажатии на одну из кнопок MainForm делается невидимой и появляется вторая форма. А как сделать, чтобы при нажатии на кнопку на второй форме появлялась третья, а вторая закрывалась и освобождалась из памяти? После 3-й четвертая и обратно.
Заранее благодарен.


Calm   (2002-12-15 16:21:00) [1]

Параметр метода TForm.Create() AOwner:TComponent обозначает того, кто будет эту форму освобождать, если она не будет освобождена программистом явно. Если указать Apllication, то форма будет освобождена при завершении приложения. Если указать nil, то если явно не освободить форму, то она так и останется (память не освободится)

Вариант Application.Destroy(TForm2, Form2) указывает на то, что с темой Вы явно не знакомы.
Скорее всего, требуется почитать книжки.


Zolotov   (2002-12-15 16:05:00) [2]

А что означает (Form2). Это для чего? Я думаю, что нужно как-то Destroy Form2. Например Application.Destroy(TForm2, Form2). Но, такого нет. Может быть есть, что-то подобное?


Calm   (2002-12-15 15:56:00) [3]

Странно...
Может нельзя писать
Form3:=TForm3.Create( Form2); ?


Zolotov   (2002-12-15 15:49:00) [4]

Дело в том, что если мы с основной формы запускаем любую форму, тогда это срабатывает, а вот если не с основной, а со 2-й, 3-й и т.д. тогда ничего не получается. Нужно как-то по другому закрывать форму. Close в данном случае вообще не срабатывает.


Calm   (2002-12-15 15:38:00) [5]

Значит что-то где-то не то...


Zolotov   (2002-12-15 15:32:00) [6]

Я уже так делал 1000000 раз не получается. Следующая форма создается и появляется, а вот предыдущая не закрывается и видна, только она пассивна. И если вызывать предыдущую форму, она создается повторно и так до определенного момента, пока память не будет перегружена. После чего выдается сообщение о перегрузке памяти и приложение закрывается, причем оно занимает память и снять его можно только по Ctrl+Alt+Del.


Calm   (2002-12-15 15:23:00) [7]

На клик кнопи во второй форме пишеш
Form3:=TForm3.Create(application); // т.к. форму не только показываем, но и создаем
Form3.Show;
Close;


В обработчике OnClose у Form2 нужно написать Action:=caFree,
чтобы форма не просто закрылась, но и освободилась


Наверх

Титульная страница Поиск, карта сайта Написать письмо