读书人

请问一个打开界面的小疑点

发布时间: 2012-02-05 12:07:15 作者: rapoo

请教一个打开界面的小问题
在第一个界面中(form1)new出第二个界面时,怎样把第一个界面close?

[解决办法]
form1-> Hide();
form2-> Show();
[解决办法]
你Close不掉的!除非你的两个Form没有包含关系
[解决办法]
不是一定Close不掉,关键要看你是怎么Show出来的 是用Show还是用ShowModal()
如果是Show出来的 那是可以Close的
程序如下:
比如有3个Form Form1,Form2,Form3
Form1上打开Form2,Form2上打开Form3
//-------------------------Form1中的代码------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
if(Application-> FindComponent( "Form2 ") == NULL)
{
TForm2 *f = new TForm2(Application);
f-> Show();
}
else
Form2-> Show();
}
//-------------------------Form2------------------------------------------

void __fastcall TForm2::Button1Click(TObject *Sender)
{
if(Application-> FindComponent( "Form3 ") == NULL)
{
TForm3 *f = new TForm3(Application);
f-> Show();
}
else
Form3-> Show();

this-> Close();
}

void __fastcall TForm2::FormClose(TObject *Sender, TCloseAction &Action)
{
Action = caFree;
}
//-----------------------------Form3-----------------------------------------
void __fastcall TForm3::FormClose(TObject *Sender, TCloseAction &Action)
{
Action = caFree;
}
//---------------------------------------


[解决办法]
把上面代码中的Show改用ShowModal 在点了button后前一个Form还是能看到的 只有关闭后一个new出来的Form前一个Form才会被Close
[解决办法]
一般主窗体是不能关闭的,只能隐藏的,主窗体关闭了,整个程序也就关闭了

读书人网 >C++ Builder

热点推荐