ShowModal会中断调用者,直到那个窗口结束.可以使用PostMessage.const
  MyMessage=WM_USER+1000;...
protected
  procedure DoTask(var Message:TMessage); message MyMessage;
public
  ...
end;...
PostMessage(Handle,WM_MyMessage,0,0);
Form2.ShowModal;
end;procedure TForm1.DoTask(var Message:TMessage);
begin
...//do your task here
PostMessage(Form2.Handle,WM_CLOSE,0,0);
end;

解决方案 »

  1.   

    用form.show不行吗?
    为什么一定要用showmodal?
    如果一定要用showmodal,那就用线程吧。
      

  2.   

    可以这样设置
    此form2设置为一直在最前面
    再用form2.show
    就可以了
      

  3.   

    form2设置为一直在最前面
    再用form2.show
    ---------------------
    这样不好,form2会覆盖其它程序,使你的程序太霸道
    用线程可以,如果不怕麻烦的话.如果不能提高效率,不要用线程.