Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > 2 формы


Автор: Tinto 22.2.2004, 13:54
Господа так какже работать с двумя формами. Например есть 2 формы 1я открывается отрабатывает и закрывается. Код такой
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
Form2->ShowModal();
}
Вопрос такой как мне сделать чтобы не было видно Form1 после этого? baaa.gif

Автор: _hunter 22.2.2004, 18:38
по-идее в OnShow Form2 делаеш Form1->Hide();

Автор: Tinto 22.2.2004, 19:13
baaa.gif [QUOTE] да спасибо hunter, дествительно форма1 спряталась, но для этого пришлось приинклюдидь юнит1 (там где форма1) в юнит2 и процессы в юнит1 стали подтормаживать, а нехотелось бы такой ценой убирать форму1. А нельзя ли вообще грохнуть юнит1 (он больше не нужен, когда отработал) может тогда и форма грохнется, или грохнуть одну форму1.? withstupid.gif

Автор: _hunter 22.2.2004, 20:18
можно. Но зачем тогда форму2 модально показывать?
проще делать просто Show(this), а в форме 2 делать Sender->Free()

Автор: Tinto 22.2.2004, 20:24
hunter. Не совсем понял, если можно кусок кода? baaa.gif

Автор: _hunter 22.2.2004, 21:00
в форме2 создаеш такой метод:
Код
__fastcall TForm2::MyShow(TComponent* who){
 this->Show();
 who->Free();
};


в форме1:
Form2->MyShow(this);

предварительно подключив к Form1 Form2.h

не проверял, но должно работать

Автор: Tinto 22.2.2004, 21:19
hehe.gif Thanks. Попробую, но мне каатся, сложновато who, this, MyShow. Я вот первое предложение 2ой раз прогнал, вроде тормозить меньше стало, а так красиво получается Form1 пропадает Form2 появляется!

Автор: Tinto 22.2.2004, 21:31
А может вообще 2ю форму убрать и удалив все элементы с 1ой формы динамически назначить новые, тем более, что их всего-то 5 штук, одновременно сократив размер формы. Вот только как это по времени будет, долго ждать не хотца?

Автор: _hunter 22.2.2004, 22:23
Цитата
Вот только как это по времени будет


Глазом моргнуть не успееш smile.gif

Автор: Vyacheslav 24.2.2004, 10:23
Что бы форма Form1 была не видима
Код

void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
Form2->Show();
Action = caHide;
}

Что бы форма Form1 была уничтожена
Код

void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
Form2->Show();
Action = caFree;
}


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