Delphi 使窗体Showmodal后可以操作其他窗体

摘要:
对话框ShowModal之后不能操作其它窗口,实际上是因为WindowsDisable了其它窗口。例如:form2.showmodal;在form2的OnShow事件中:enablewindow;如何使用Show方法来显示一个模态窗口   我们知道在Delphi中显示一个窗口有两种方式,模态方式显示和非模态方式显示,模态方式显示窗口时,必须在自身关闭后才能使父窗口起作用,但有时我们想要实现一个窗口,既要具有模态窗口的特性,但又要能从父窗口中控制它,如显示一个表示处理进行过程的进度框。利用DisableTaskWindows和EnableTaskWindows可以达到这一效果。
对话框ShowModal之后不能操作其它窗口,实际上是因为Windows Disable了其它窗口。所以当你需要在模态对话框中访问其它已经可见的窗口时,需要用EnableWindow API来激活对应的窗口。
例如:
form2.showmodal;
在form2的OnShow事件中:
enablewindow(form1.handle,true);
如何使用Show方法来显示一个模态窗口
 
 
  我们知道在Delphi中显示一个窗口有两种方式,模态方式显示(ShowModal)和非模态方式显示(Show),模态方式显示窗口时,必须在自身关闭后才能使父窗口起作用,但有时我们想要实现一个窗口,既要具有模态窗口的特性,但又要能从父窗口中控制它,如显示一个表示处理进行过程的进度框。利用DisableTaskWindows和 EnableTaskWindows 可以达到这一效果。
  下面是演示实现程序:
procedure TForm1.ShowProgressDlg;
var
WindowList: Pointer;
begin
{除了Form2外使所有窗口无效}
WindowList := DisableTaskWindows(Form2.Handle);
try
Form2.Show;
{循环执行任务}
Form2.ProgressBar1.Position :=
Form2.ProgressBar1.Position + 1;
{循环结束}
finally
{重新使所有窗口有效}
EnableTaskWindows(WindowList);
Form2.Close;
end;
end;
 
使窗体Showmodal后可以操作其他窗体
字体大小:中小标准->行高大小:标准
01对话框ShowModal之后不能操作其它窗口,实际上是因为Windows Disable了其它窗口。所以当你需要在模态对话框中访问其它已经可见的窗口时,需要用EnableWindow API来激活对应的窗口。
02
03例如:
04
05form2.showmodal;
06
07在form2的OnShow事件中:
08
09enablewindow(form1.handle,true);
10
11如何使用Show方法来显示一个模态窗口
12
13 
14
15 
16
17  我们知道在Delphi中显示一个窗口有两种方式,模态方式显示(ShowModal)和非模态方式显示(Show),模态方式显示窗口时,必须在自身关闭后才能使父窗口起作用,但有时我们想要实现一个窗口,既要具有模态窗口的特性,但又要能从父窗口中控制它,如显示一个表示处理进行过程的进度框。利用DisableTaskWindows和 EnableTaskWindows 可以达到这一效果。
18
19  下面是演示实现程序:
20
21procedureTForm1.ShowProgressDlg;
22
23var
24
25WindowList:Pointer;
26
27begin
28
29{除了Form2外使所有窗口无效}
30
31WindowList := DisableTaskWindows(Form2.Handle);
32
33try
34
35Form2.Show;
36
37{循环执行任务}
38
39Form2.ProgressBar1.Position :=
40
41Form2.ProgressBar1.Position +1;
42
43{循环结束}
44
45finally
46
47{重新使所有窗口有效}
48
49EnableTaskWindows(WindowList);
50
51Form2.Close;
52
53end;
54
55end;

免责声明:文章转载自《Delphi 使窗体Showmodal后可以操作其他窗体》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇【转】推荐给大家的7本游戏开发书js window.open 参数设置下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

四、Delphi 2009 泛型容器单元(Generics.Collections)[3]: TStack<T>

TQueue 和 TStack, 一个是队列列表, 一个是堆栈列表; 一个是先进先出, 一个是先进后出.TStack 主要有三个方法、一个属性:Push(压栈)、Pop(出栈)、Peek(查看下一个要出栈的元素);Count(元素总数). pasunit Unit1;interfaceuses  Windows, Messages, SysUtils,...

Delphi中Indy 10的安装和老版本的卸载

安装中遇到的问题: 1,用新的indy替换掉了老版本source下面的indy 2,按照参考资料编译的.dpk版本要保持跟老版本一致,如本人的就是XXX100.dpk 3,编译和安装路径统一放在了delphi安装目录的bin下面 4,在tool的library path中要加入    XXXDelphi 7SourceCore XXX Delphi 7So...

Qt布局管理

设计软件中各个部件的位置排列,有两种方法: 1.设置widget的在父窗体中的坐标和大小 widget->move(x,y); widget->resize(width,height); //widget->setGeometry(QRect(x,y,width,height)); 什么时候用:不想被布局约束,对这种控件可控制时 例如下面...

WPF-悬浮窗(类似于360)

boss要求开发一个类似于360的悬浮窗,如下图所示: 目前采用的是wpf做的客户端,之前有个winform的项目,我参考了下,完成了wpf版的悬浮窗。 Height="52" Width="131" WindowStartupLocation="Manual" ShowInTaskbar="False" WindowStyle="None" W...

C# MDI 窗体和菜单

MDI主窗体和子窗体 1,如何把之前的子窗体提到前面? 调用子窗体的Activate()即可,TopMost没什么用,只是表示位于没有设置topmost的其它窗体之上而已 2,MDI子窗体的标题栏很难去掉,通过把窗口风格设置为NONE的方法对于最大化的窗口没用,而非最大化手动设置子窗体位置又很麻烦,总是设置不对,有偏移 但是子窗口标题栏会和菜单整合在一起,...

WinForm窗体程序中使用CefSharp获取加载后的资源、截取request参数、拦截response数据、注入jquery文件和js代码(4)-注入jquery文件和js代码

源码地址:源代码csdn  或者底部qq问我要 六、注入jquery文件和js代码 在界面button按钮点击事件中 private void button1_Click(object sender, EventArgs e) { //注入本机binx86debug下的文件 browser.E...