mxn |
Отправлено: 10.10.2006, 15:50 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 12
|
Господа, подскажите пожалуйста!
Есть проект с двумя формами.
В опциях проекта во вкладке Forms в разделе Auto-create forms находится форма Form1, а форму Form2 я перенес в Available forms.
То есть Form2 не загружается в память при загрузке проги.
При нажатии на кнопку находящуюся на Form1 выполняется код:
TForm2 * Form2;
Application->CreateForm(__classid(TForm2),&Form2);
Form2->Show();
В результате загружается Form2 — все отлично.
Вопрос: правильна ли такая техника поведения с формами и как ВЫГРУЗИТЬ Form2 из памяти после ее закрытия ??? |
|
olegenty |
Отправлено: 10.10.2006, 15:54 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
правильна, но никак не выгрузить.
целесообразнее пара new/delete, либо обёртка в auto_ptr, либо другой интеллектуальный указатель
|
|
PetVlad |
Отправлено: 11.10.2006, 10:04 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 2
|
... Form1Create (...)
{
Button1->Caption = "Create new Form2";
Button2->Caption = "Delete Form2";
}
... Button1Click(...)
{
TForm2 *frm = new TForm2( this); //можно для Form2 писать новые конструкторы и передавать параметры
frm->Caption = "Form2";
}
...Button2Click(...)
{
TForm2 *frm;
for( int i=0; i< MDIChildCount; i++) //MDIChildCount точно не уверен
{
if( MDIChildren[i]->Caption == "Form2")
{
frm = (TForm2 *) MDIChildren[i];
delete frm;
break;
}
}
}
//С вариациями разберешься сам |
|
mxn |
Отправлено: 11.10.2006, 10:40 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 12
|
Есть форма и на ней множество элементов управления. И при таком подходе:
TForm2 *frm = new TForm2( this);
...
отображается ПУСТАЯ форма.
Правильно ли будет сделать так:
Application->CreateForm(__classid(TSettingsForm),&SettingsForm);
...
а в событии OnClose формы SettingsForm прописать:
Action = caFree;
Так правильно? Форма действительно будет выгружаться? |
|
olegenty |
Отправлено: 11.10.2006, 14:34 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
да.
но (IMHO) это как-то кривовато. но только IMHO.
предпочитаю код, минимально привязанный к фишкам реализации borland, и максимально привязанный к stl/boost
|
|
mxn |
Отправлено: 11.10.2006, 15:59 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 12
|
Все понял. Большое спасибо!
А до STL и BOOST я еще не дорос... :-) |
|