如何关闭ShowModal的窗口
有Form1和Form2两个窗口,Form1中有一个Button1。其中的事件有:
procedure TForm1.Button1Click(Sender: TObject);
begin
Form2 := TForm2.Create(Application);
Form2.ShowModal;
....;//继续下面的代码
end;
Form2的OnShow事件为:
procedure TForm2.FormShow(Sender: TObject);
begin
...;
if 某条件不成立 then
begin
关闭Form2; //即不再显示Form2
exit;
end;
...;//下面还有代码
end;
我试了很多方法,都无法实现上面的效果。请问如何修改Form2的OnShow事件才能不再显示Form2?
或者有没有其他好的方法?
问题点数:30、回复次数:10Top
1 楼heluqing(鉴之小河〖劳累求充实〗)(vcl .net)回复于 2005-04-02 12:20:55 得分 5
把判断放到form1里...Top
2 楼yxlab()回复于 2005-04-02 12:21:07 得分 1
调用CLOSE方法
Top
3 楼qcwx828()回复于 2005-04-02 12:21:37 得分 1
ModalResult属性应该可以用Top
4 楼zhou151420448(我是新手)回复于 2005-04-02 12:22:27 得分 1
if 某条件不成立 then
begin
form2.close; //即不再显示Form2
end;
...;//下面还有代码Top
5 楼zgj2004()回复于 2005-04-02 12:29:09 得分 0
to heluqing(鉴之小河**<挣大钱、娶美女>) :
if 某条件不成立 then
begin
form2.close; //即不再显示Form2
end;
...;//下面还有代码
上述条件只能在Form2中出现,所以不能移到Form1中判断!还有其他好方法吗?Top
6 楼zgj2004()回复于 2005-04-02 12:32:49 得分 0
to qcwx828() :
ModalResult属性如何正确使用?我在OnShow事件给它赋值了,解决不了问题。
to all:
if 某条件不成立 then
begin
form2.close; //即不再显示Form2
end;
...;//下面还有代码
直接Close是不行,Form2还是会显示出来的。你们可以试试!Top
7 楼vfork(學習htm、css、js、java,然後到ajax。)回复于 2005-04-02 13:52:12 得分 15
哈哈.用
在button的onclick事件里添加:
PostMessage(Handle,WM_Close,0,0);Top
8 楼NoDelphibbs(乌鸦)回复于 2005-04-02 14:46:18 得分 1
请查阅form的事件顺序。Top
9 楼Tensionli()回复于 2005-04-02 14:50:09 得分 1
在FORM1的事件中写
if form2.modalresult = mrok then
...........Top
10 楼shove(shove)回复于 2005-04-02 15:13:31 得分 5
Show 事件里面 Close; 不能关闭窗口。
Active 事件可以。
可以这样做:
1、定义窗体变量 isShow: Boolean;
2、Create 事件里面 isShow := True;
3、Show 事件里面
if 某条件不成立 then
begin
isShow := False;
//form2.close; //即不再显示Form2
end;
...;//下面还有代码
4、Active 事件里面 if not isShow then Close;Top




