想测试一下你的Delphi水平吗?请看此问题。

sadpacific 2000-04-13 10:40:00
后台程序执行时,系统弹出一个对话框显示:程序正在....,请稍候,当操作完成后,对话框记自动消失。
要实现这种效果,你会用什么方法呢?
...全文
387 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
RIAEasy 2000-04-22
  • 打赏
  • 举报
回复
最好的办法是注册一个自定义消息,用线程(也可不用)显示对话框.
这样,既可以处理进度显示,还可以让他隐藏、移动、关闭。
Axiong 2000-04-21
  • 打赏
  • 举报
回复
你最好用postmessage
因为发了消息后,你还可以接续处理新的事物,用sendmessage不行。
Dlg:=TDlg.Create(application);
Dlg.show;
{要处理的事物}
// DestroyWindow(Dlg.handle);
// SendMessage(Dlg.handle,WM_CLOSE,0,0)
postmessage(dig.handle,WM_CLOSE,0,0)
{
新事物
}
Axiong 2000-04-21
  • 打赏
  • 举报
回复
其实你的问题完全可以用消息处理,也可以调用DestroyWindow处理。
下面我讲一下我的方法:
建mainform和dig两个窗口
mainform的create事件中处理如下(根据需要放在开始启动事物的地方)
Dlg:=TDlg.Create(application);
Dlg.show;
{要处理的事物}
DestroyWindow(Dlg.handle);
// SendMessage(Dlg.handle,WM_CLOSE,0,0)
测试通过,有问题email给我
注意:在在project.options.forms中去掉Dig的自动创建

sadpacific 2000-04-20
  • 打赏
  • 举报
回复
To yab:
我发了一个WM_CLOSE消息给对话框,为什么不见它关闭呢?
sadpacific 2000-04-14
  • 打赏
  • 举报
回复
To 929:
能不能告诉我什么是“无模式的对话框窗口”?怎么显示呢?
To Lin:
什么叫“这种问题太烂”?岂不闻“知之为知之,不知为不知”。
yab 2000-04-14
  • 打赏
  • 举报
回复
还是用模式对话框吧。
showmodal之后,dialog窗口将处理的消息发回给原来的窗口。
然后在原来的窗口进行处理,结束之后发个WM_CLOSE给对话框就可以了。
渤海海峡 2000-04-13
  • 打赏
  • 举报
回复
执行前,create form ,then show(on top),别忘了update
执行后,free.
江王 2000-04-13
  • 打赏
  • 举报
回复
可以用多线程来做。将后台操作为一个辅线程,而对话框为主线程,仍用模态显示。
Lin 2000-04-13
  • 打赏
  • 举报
回复
sadpacific,又是你!这种问题类似Splash Window,上面已讲得很好了。哄我...^_^
Lin 2000-04-13
  • 打赏
  • 举报
回复
sadpacific,又是你!这种问题太烂,类似Splash Window,上面已讲得很好了。哄我...^_^
halfdream 2000-04-13
  • 打赏
  • 举报
回复
或许有兴致的时候,
我会加上TTIMER来适当延时。
929 2000-04-13
  • 打赏
  • 举报
回复
显示一个无模式的对话框窗口,然后在程序后台处理完成后,发送消息或直接将这个窗口关掉(注意检测此时窗口的有效性,这可用标记来完成)。

5,379

社区成员

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

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