“模式对话框”并不是 “必须关闭该框才能切换到其他程序”,而是“必须关闭该框才能切换到该框的父窗口”。任何 Form 都可以以 Modal 形式显示,只需要调用该 Form 的 ShowModal 方法就行了,还有 ShowMessage 等信息框也是“模式对话框”。

解决方案 »

  1.   

    to zengyufeng:老师好!上次我的问题也是你回答的,很感谢你。关于“模式对话框”“必须关闭该框才能切换到其他程序”的说法是我从书上看到的,而且特意说明用来限制用户某些操作的,比如让用户输入密码等。书名是《Delphi3 自学通》,愿书是Borland公司写的,应该没错吧,不过,还得您指点才行。
    在Windows本身也有这样的对话框,具体我不记得了,特别是出错的时候,它出来之后你不销掉它就不能切换到其他程序,很霸道,但也很管用的。
      

  2.   

    不是很明白tod的意思,如果仅仅只是想“关闭该框才能切换到其他程序”,那么zengyufeng说的已经非常清楚了
      

  3.   

    zengyufeng说的是对的,模式对话框就是“必须关闭该框才能切换到该框的父窗口”,那本书我想大概是翻译的有问题。Windows本身是多任务操作系统,也就是说每个程序都是独立运行于自己的4G内存空间的。由于你的程序而不让其他程序运行是不符合多任务要求的。当然,Windows有一些未公开的api函数可以做到(比如锁定鼠标和键盘),但在NT下肯定不行。
      

  4.   

    ShowModal(Form);
    这里的Form的Visable属性必须是False
      

  5.   

    ti Nicrosoft:其实您误解了我的意思了,我不是不让其他程序运行,只是在这个窗口关闭之前不能切换到其他任务而已,无论是按Alt+Tab还是直接用鼠标点击都不行,即他们不能到前台,并不是不运行。
    我早知道您很厉害的,您现在还在上学吧,确实很厉害的,原来看过您不少帖子,不过最近一段时间很少看见你了,大概是很忙吧?刚才您说的那些未公开的API能给我讲讲吗?感激不尽!谢谢。非常感谢各位的回复,等问题解决了马上给各位发money啦!
      

  6.   

    to Tod:用模式对话框仅仅能实现不能切换到对话框的父窗口,模式对话框的定义就是如此。关于另外您说的要不让切换到其他程序,您可以试试MessageBox函数,将句柄参数设置为0(即桌面句柄),只是设想,没有试过,不知道可不可行。我的确还在上学,不过已经大四,马上要毕业了,所以比较忙了。呵呵。那些api我也不熟(没用过),只是看到过相关的文章而已。不好意思。
      

  7.   

    to Nicrosoft:谢谢你,那可能是原书翻译有些问题。至于MessageBox函数我用过,好象也是不行的,没关系,我自己慢慢找吧,要是找到了的话,哈哈,也给自己一点分,嘻嘻!
    谢谢各位捧场,继续努力!