如何使窗体 Showmodal 后可以操作其他窗体

对话框 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;

 

欢迎转载,但请保留出处,本文章转自[华软源码],原文链接:http://www.hur.cn/special/delphiProgram/07546.htm

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值