zoukankan      html  css  js  c++  java
  • 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;
  • 相关阅读:
    有几个点会导致插件包不出现
    JScrollPane恢复正常滚动量
    java jlabel 对齐_java将JLabel中的文本右对齐
    SVN的安装和使用手册
    idea生成类注释和方法注释的正确方法
    关于RCP中英文的一些总结
    精通Hibernate类与类关联关系:[一]建立多对一的单向关联关系
    Hibernate笔记=>继承关系的映射[转 王继彬]
    Unity(六):使用场景Ⅲ:用于依赖注入(上)
    NHibernate之旅(13):初探立即加载机制[转 Blog 李永京]
  • 原文地址:https://www.cnblogs.com/zhangzhifeng/p/5707748.html
Copyright © 2011-2022 走看看