我在一个Form的FormActive函数里面用OLE调用了后台的应用程序。后台程序执行时弹出一个对话框,执行完对话框消失,是一个很短的过程,但是很烦人。
因为在执行FormActive的时候Form还没有完全显示出来,此时就弹出后台程序的对话框,很难看。问题一:能不能让窗体在FormActive函数执行的时候(相当于后台程序运行的时候)最小化,执行完再弹出窗体,这样就看不到讨厌的对话框了?如果可以的话,怎么弄阿?问题二:是不是在FormActive函数里面调后台的应用程序不好阿,还能不能在其他的函数里面调用?现在的问题是,对话框弹出来了,但花了很长时间才完全显示出来,这之间就只能干等着,很麻烦。

解决方案 »

  1.   

    SellExecute 之类都可以用 SW_ 系列的, SW_Hide 就可以了。
      

  2.   

    你可以把‘用OLE调用了后台的应用程序’的工作单独做成一个执行线程来处理
      

  3.   

    谢谢各位的答复。
    我把调用OLE的那部分放到了onshow里面,执行结果是form一开始不显示,调用OLE程序那部分结束之后才出来,比放在FormActive里面效果好一些。
    但是后台程序的对话框还是会弹出来:(我想,能不能在form显示出来之前,在后台OLE程序运行的时候,让delphi弹出一个对话框,显示目前的进度,当后台程序运行完,让这个对话框消失,同时弹出form窗体。这是不是要用到多线程的知识?应该如何实现呢?