模态窗口问题

angshuangxi 2001-08-21 02:21:49
我在程序中某个地方执行时间比较长,我想显示一个模态窗口,可是我在该过程前面加一句 form.showmodal,后面的程序就不执行了,
如果使用
Procedure TFrm_wait.CreateParams(Var Params:TCreateParams);
begin
Inherited CreateParams(Params);
Params.EXStyle:=Params.ExStyle or WS_EX_TOPMOST OR WS_EX_ACCEPTFILES ;
Params.wndParent:=GetDesktopWindow;
end;
则窗体不是模态窗体,而在该过程中,如果随便点击的话,可能会出一些小问题,
我该怎么既能让程序往下执行,又能显示模态窗体,
(不使用把要执行的代码放到form的show事件里去的方法,对我这个程序来说,这样太烦琐了 )
...全文
174 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Hillside 2001-08-22
  • 打赏
  • 举报
回复
form2设置为一直在最前面
再用form2.show
---------------------
这样不好,form2会覆盖其它程序,使你的程序太霸道
用线程可以,如果不怕麻烦的话.如果不能提高效率,不要用线程.
szkingrose 2001-08-21
  • 打赏
  • 举报
回复
可以这样设置
此form2设置为一直在最前面
再用form2.show
就可以了
zhhc 2001-08-21
  • 打赏
  • 举报
回复
用form.show不行吗?
为什么一定要用showmodal?
如果一定要用showmodal,那就用线程吧。
Hillside 2001-08-21
  • 打赏
  • 举报
回复
ShowModal会中断调用者,直到那个窗口结束.可以使用PostMessage.

const
MyMessage=WM_USER+1000;

...
protected
procedure DoTask(var Message:TMessage); message MyMessage;
public
...
end;

...
PostMessage(Handle,WM_MyMessage,0,0);
Form2.ShowModal;
end;

procedure TForm1.DoTask(var Message:TMessage);
begin
...//do your task here
PostMessage(Form2.Handle,WM_CLOSE,0,0);
end;


5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧