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