飞诺会员签到大派送 ★新手必读★ ◆◇飞诺社区版主正在招募中! 论坛吐血大奖励 原创征文
◆『N币兑换图书活动』◆ 著名杀毒软件之七种兵器-详评 抵制践踏GPL的QQ影音 金山毒霸被诉歧视消费者
青岛网偷第一案宣判10年 几款凶猛的病毒! JAVA与.NET对垒,我们到底该选谁? 以下哪种木马最邪恶?

[Delphi] 如何关闭当前窗口后打开另外一个窗口 - Delphi / Windows SDK/API

[ 1386 查看 / 13 回复 ]

在一个按钮事件中,需要打开另外一个窗口,但打开另外一个窗口前,当前窗口需要关闭,请问如何做呢?
Close;
creat   ChildWindow...
ShowChildWindow...

悬赏金额: N币 20

悬赏的问题解决办法
TOP
在当前窗体的OnDestroy事件里面写一下试试看
TOP
form1隐藏,form2   显示就行了.主窗口按说关闭就会程序关闭   ,再说程序在运行没必要关闭.
TOP
为什么要关闭呢?因为,子窗口一个按钮事件中,需要creat   open一个Form,而这个Form刚好就是上面提到的要关闭的Form,因为不关闭,子窗口反复点那个按钮,会出错,提示那个著名的地址什么冲突
TOP
如果有个主窗口,而打开的窗口都在其中可以:
在这个按键上写:
 
ChildWindow:=TChildWindow.create(application);
ChildWindow.show;
self.close;
 
如果在当前窗口中事件中写
应该只能用Hide和show了
TOP
为什么要关闭呢?因为,子窗口一个按钮事件中,需要creat   open一个Form,而这个Form刚好就是上面提到的要关闭的Form,      
 
子窗口按钮事件恢复隐藏的form就可以了.      当然我是思路,换方式解决问题.
TOP
截获WINDOWS的销毁消息,然后ShellExecute开启另一个程序,貌似这样做应该可以,直接写在OnClose或OnDestory事件里好象不行~~~~~~~~~
 
如果还不行,就用做个控制台程序,定时开启程序
TOP
Hide和show
TOP
这两个窗口都是模态打开,所以那样处理比hide好
TOP
试一下这样:
 
在你需要close的窗体里:
定义里加:
       private
       const
             WM_JOINCLICK   =   WM_USER+2;
close事件里写:
PostMessage(FormMain.Handle,WM_JOINCLICK,0,StrToInt(self.RzEditAuctionNo.Text));
 
主窗体里加:
定义:
       private
       const
             WM_JOINCLICK   =   WM_USER+2;
       public
             procedure   WndProc(var   message:   TMessage);   override;
 
加代码:
procedure   TFormMain.WndProc(var   message:   TMessage);
begin
       if   message.Msg=WM_JOINCLICK   then   begin
             创建你的新窗体
             exit;
       end;
 
       inherited   WndProc(message);
end;
 
你的问题可能是出在关闭与创建的顺序上,新窗体没建完,这个窗体又要关,所以出现内存错误,上面做的原因是:老窗体在关闭是给主窗体发个消息,表示我要关了。这个消息是异步的。主窗体收到这个消息再去创建新窗体就没问题了。
 
前一段我也是遇到这样的问题,所以才这样去解决。
TOP
晕,哪里用这么复杂。点击按钮时给主窗体发个消息,主窗体收到后创建不就可以了。
TOP
谢谢楼上各位大侠。
我原先考虑的是在主窗口建立一个变量,根据变量确定是否打开某窗口,这样太繁琐不规范,还是用消息规范。
另外,老鹰,请教,你是否用webbrowse做过界面?能否看一下效果?
TOP
我以前做过,不过现在看不到效果了。两年前的事了。
但自认为对webbrowser还比较了解,有问题你尽管问了。
其实用webbrowser配合起来可以做很多东西。
TOP
有BUG?不用再反复纠缠
建议版主过来封dBASEIII的ID,让大家看清个人的丑恶的
如何关闭当前窗口后打开另外一个窗口 - Delphi / Wind
小哈欠出生,平安健壮,哈欠在此散分还愿:)
去掉Delphi字符串中的空格?问题简单别闲凡。刚用delp
前些天不幸得了“贝尔麻痹”, 也叫面神经麻痹, 若干
没有找到rtl70.bpl,因此这个应用程序未能启动 - Delph
如何实现控制其它程序的窗体中的控件,如:TDBGridE的
关于用Delphi写的一个windows media player播放器的问
我们还需要新的编程语言么?
colse