按钮如何打开另外一个窗体同时关掉本窗体??
谢谢
这问题很菜对吧!

xxx->Show();
Close();

如果本窗体是主窗体,就不行了
那只能
***->Show();
this->Hide();

哦,搞错了,不能是this,应该是form名

哈哈  谢谢
这个论坛看来不错啊
我以后常来!

这问题看上去很菜,其实不菜的。
几乎所有的菜鸟都碰到过(呵呵,我也想过)。

1、如果是非主窗体起动另一窗体后自个关闭,这个很容易,直接写代码1->Show();2->Close();
2、至于主窗体,那是不能关闭的,只能是Hide(),也就是藏起来。如果你实在要关了主窗,那就不是关的概念了,那是主进程替换,这玩意儿难度就大了,记得查过相关资料,但本人没搞出个所以然来,你如果有兴趣可以去查查看,似乎很难的。

应该不存在"主进程替换"的概念吧,不好意思,我还是第一次听到这个词

这只是一个消息循环的问题,BCB的main函数WinMain中没有消息循环,其消息循环函数在TApplication类中,而TApplication又把消息循环的控制权交给了Application中第一个CreateForm的TForm对象,当这个TForm关闭后,Application中的消息循环就结束了,程序自然就退出了,而其它的Form,因为考虑到资源重用,在调用Close()时其实窗口并未Destroy,只是简单的Hide了,如果你要关掉Main TForm再打开其它Form,那就只能用Hide()了

各位老大理解复杂了吧?"按钮如何打开另外一个窗体同时关掉本窗体??"是什么意思?是打开自身的"窗体"还是打开外部的程序?
要是打开外部的程序是很简单:
ShellExecute(Handle, "Open","文件名", NULL, NULL, SW_SHOW);//打开外部程序
PostMessage(Handle, WM_SYSCOMMAND, SC_CLOSE, NULL);//关闭当前窗口.
要是前后打开的是一个程序的不同窗体,那很麻烦的,需要调用拷贝自身然后用复制品把自己消灭掉,具体程序在老妖的站里面有详细的介绍.

大家想的都复杂了哦

程序启动时把主Form隐藏,在关闭这个窗体时打开隐藏窗体就可以了….

直接写代码1-> Show();2-> Close();

我想LZ可能是在设计一个类似密码权限的窗口,密码通过后密码界面关闭,将被操作的窗口显示。
如果这样的话密码窗体就可能是modal形式,那关闭可能会麻烦点。
1.密码窗体“确定”键的ModalResult==mrOk,“取消”键的ModalResult==mrCancel
2.void __fastcall T密码窗体::FormCloseQuery(TObject *Sender, bool &CanClose)
{
if(ModalResult==mrOk && EditKey->Text!="123456")
        {
        Application->MessageBoxA("密码输入错误,请重新输入","提示",64);
        EditKey->Text="";
        CanClose=false;
        } 
}
3.void __fastcall TMainForm::ShowClick(TObject *Sender)
{
      if (T密码窗体->ShowModal()==mrOk)
      {
        T即将操作窗体->ShowModal();
        }
}

该回复于2008-07-19 16:14:36被版主删除

学习中。。。。。。学习中。。。。。。

如果消息机制不会的话 用控件完全可以实现 BCB的控件是独步天下的

xxx->Show();
Close();//关闭

xxx->Show();
Hide();//隐藏


如果消息机制不会的话 用控件完全可以实现 BCB的控件是独步天下的

//关闭所有子窗体
    nCount=this->MDIChildCount;
    i=0;
    while(i <nCount){
        this->MDIChildren[i]->Close();
        i++;
    }

我想LZ的问题没有这么复杂吧,也想不到有这么复杂的解决办法,学习ING……

收藏学习