对话框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;
01 |
对话框ShowModal之后不能操作其它窗口,实际上是因为Windows Disable了其它窗口。所以当你需要在模态对话框中访问其它已经可见的窗口时,需要用EnableWindow API来激活对应的窗口。 |
09 |
enablewindow(form1 . handle, true ); |
17 |
我们知道在Delphi中显示一个窗口有两种方式,模态方式显示(ShowModal)和非模态方式显示(Show),模态方式显示窗口时,必须在自身关闭后才能使父窗口起作用,但有时我们想要实现一个窗口,既要具有模态窗口的特性,但又要能从父窗口中控制它,如显示一个表示处理进行过程的进度框。利用DisableTaskWindows和 EnableTaskWindows 可以达到这一效果。 |
21 |
procedure TForm1 . ShowProgressDlg; |
31 |
WindowList := DisableTaskWindows(Form2 . Handle); |
39 |
Form2 . ProgressBar1 . Position := |
41 |
Form2 . ProgressBar1 . Position + 1 ; |
49 |
EnableTaskWindows(WindowList); |
最新文章
- 数字信号处理--FFT
- java基础 数组15
- 1.SQL语句入门
- PHP 多维数组 Key Value的使用
- 线段树的区间更新---A Simple Problem with Integers
- ArcGIS中定义图框样式
- 【mysql】关于Index Condition Pushdown特性
- Kafka集群模式部署
- Android ADB 端口占用问题解决方案
- 每日陌生php函数
- AngularJs学习笔记1——入门知识
- Java经典编程题50道之四十一
- BotVS配置托管者-基于新浪云
- 如何在工程中使用axis2部署webservice
- bzoj 4515: [Sdoi2016]游戏
- Leetcode_237_Delete Node in a Linked List
- Uniform Resource Name Server
- SpringBoot(十三)-- 不同环境下读取不同配置
- Redis实战(一)CentOS 7上搭建redis-3.0.2
- R语言设置write.table()输出的文件格式
热门文章
- 通俗解释IOC原理
- [bzoj2186][Sdoi2008]沙拉公主的困惑——数论
- 关于jQuery.extend
- Settings点击Location(位置)后右上角的开关button不会消失
- python基础===socket模块的讲解(转)
- gcc升级方法
- picker鼠标上下拖动选择内容
- poj 1584(综合性强的计算几何,好题)
- redis特性与使用场景
- MyEclipse的破解代码,适用各个版本