怎样关闭form(50分)

  • 主题发起人 主题发起人 longwx
  • 开始时间 开始时间
L

longwx

Unregistered / Unconfirmed
GUEST, unregistred user!
我用showmodal打开的form,结果在onFormShow事件中用close无法关掉
它,大家能告诉我为什么吗?更好的处理方法是什么呢?谢谢!
 
onformshow事件中form还没有显示呢,如何close??
你可以在onformactive中关闭它。
 
刚才说错了,以上方法对于用showmodal打开的form是不行的。
你可以放一个timer,时间一到form就关闭了。
 
procedure TForm2.FormShow(Sender: TObject);
begin
postmessage(handle,wm_close,0,0);
end;
 
不那么麻烦
试一试下面代码
procedure TForm2.FormShow(Sender: TObject);
begin
postmessage(handle,wm_close,0,0);
end;


 
试一试下面代码
procedure TForm2.formclose(Sender: TObject);
begin
action:=cafree;
end;
 
其实很容易点事儿,你先用 Form.Show 打开窗口,然后用 Form.Close 关闭窗口
不就行了。
 
不那么麻烦试一试下面代码
procedure TForm2.FormShow(Sender: TObject);
begin
postmessage(handle,wm_close,0,0);
end;
 
liu jzx提出的方法
 
You can destroy or free the form then it can not show.
 
>更好的处理方法是什么呢?
在ONPAINT中加入
procedure TForm2.FormPaint(Sender: TObject);
begin
close;
end;
 
既然想在show的时候关掉它, 那为什么还要show它呢? ^_*

一般地, 对于showmodal的窗口, 都应该由用户来干预关闭,
而程序不应该自己关闭它. 因为showmodal是独占式的, 它不关闭
程序就不继续运行, 通常是应用于用户必须做出响应的地方.

建议你在窗口上放一个close按钮, 或者干脆就不要showmodal这个窗口.

如果真想在show的时候关闭它, 可以放一个timer或者是用postmessage
发送WM_CLOSE
 
同样的问题:
在主form中用showmodal打开的form,在主form中用程序关闭它,是否能实现。
 
英国病人: 不可能, 因为这时候程序的运行控制权在showmodal的form,
不在主form. 除非在showmodal之前开一个线程监视, 看什么时候关闭showmodal
的form. ^_*

showmodal的意思就是显示直到关闭才继续程序的执行, 类似串行方式.
show类似于并行方式.
 
能不能利用Application.onidle呢?
 
这种情况,你可已用form.free来实现,free可以在内存中彻底删除,一直到你
重新调用ok ,多给点分ok!
 
多人接受答案了。
 
后退
顶部