例如:
procedure TMainform.TestRun;
var
 i : integer;
begin
 i := 0;
 //设置中断直到某个事件产生。在此期间,用户不能操作Mainform中的任何控件。
 showmessage(inttostr(i));
end;

解决方案 »

  1.   

    procedure TMainform.TestRun;
    var
     i : integer;
    begin
      Enable := False;   //设置窗体不可动
      i := 0;
      
      if 事件产生 then
        Enable := True;  //恢复窗体 //设置中断直到某个事件产生。在此期间,用户不能操作Mainform中的任何控件。
     showmessage(inttostr(i));
    end;
      

  2.   

    用户不能操作Mainform中的任何控件,你需要通过什么事件来继续呢
      

  3.   

    上面的方法都可行,使Mainform中的任何控件失效很简单。问题应该是你想通过什么事件来激活窗体呢??说说,然后再看看哪种方法可行吧。
      

  4.   

    晕发的不成功白写了用WaitSingleObject...
      

  5.   

    创建一个信号量,中断是一直占用此信号量,当某事件发生时,释放此信号量,而另外一个线程就可以获得此信号量继续向下执行了;
    createmutex();
    waitforsingleobject();可以帮你解决这个问题,
    在线程中对VCL的操作是不安全的,但你可以在线程中用另外一个方法synchronize()来调用你对VCL的操作的方法来实现你对窗体的操作
    procedure Thread1.ss;
    begin
     form1.enabled:=false;
    end;
    在你想中断的事件中可以用下面的方法;
    synchronize(ss);