Delphi 使窗體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;

 

使窗體Showmodal后可以操作其他窗體

字體大小: 中小  標准  ->行高大小: 標准   
 
 
01 對話框ShowModal之后不能操作其它窗口,實際上是因為Windows Disable了其它窗口。所以當你需要在模態對話框中訪問其它已經可見的窗口時,需要用EnableWindow API來激活對應的窗口。
02  
03 例如:
04  
05 form2.showmodal;
06  
07 在form2的OnShow事件中:
08  
09 enablewindow(form1.handle,true);
10  
11 如何使用Show方法來顯示一個模態窗口
12  
13  
14  
15  
16  
17   我們知道在Delphi中顯示一個窗口有兩種方式,模態方式顯示(ShowModal)和非模態方式顯示(Show),模態方式顯示窗口時,必須在自身關閉后才能使父窗口起作用,但有時我們想要實現一個窗口,既要具有模態窗口的特性,但又要能從父窗口中控制它,如顯示一個表示處理進行過程的進度框。利用DisableTaskWindows和 EnableTaskWindows 可以達到這一效果。
18  
19   下面是演示實現程序:
20  
21 procedure TForm1.ShowProgressDlg;
22  
23 var
24  
25 WindowList: Pointer;
26  
27 begin
28  
29 {除了Form2外使所有窗口無效}
30  
31 WindowList := DisableTaskWindows(Form2.Handle);
32  
33 try
34  
35 Form2.Show;
36  
37 {循環執行任務}
38  
39 Form2.ProgressBar1.Position :=
40  
41 Form2.ProgressBar1.Position + 1;
42  
43 {循環結束}
44  
45 finally
46  
47 {重新使所有窗口有效}
48  
49 EnableTaskWindows(WindowList);
50  
51 Form2.Close;
52  
53 end;
54  
55 end;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM