if not Assigned(DevResfrm) then
        DevResfrm := TDevResfrm.Create(self);
      DevResfrm.Show;很简单的创建一个窗口(MDIChild),在Create的时候会停顿,不能进DevResfrm.create事件,从任务管理器中看,cpu正常,内存不涨,F7也跟不进去.有什么情况会导致这种情况发生?

解决方案 »

  1.   

    self  -> application
      

  2.   

    重启动delphi试试,也有可能TDevResfrm写得有问题
      

  3.   

    你写成这个试试:
    if not Assigned(DevResfrm) then
          DevResfrm := TDevResfrm.Create(Nil);
          DevResfrm.Show;用完后,自已完成destory的操作。
    自已管理它的生命期。
      

  4.   

    if (not Assigned(DevResfrm)) and DevResfrm<>nil  then
            DevResfrm := TDevResfrm.Create(self);
          DevResfrm.Show;
      

  5.   

    你这个DevResFrm是全局变量还是 方法内的局部变量?
      

  6.   

    如果为局部变量请用:
    var
      DevResFrm: TDevResFrm;
      i: Integer;
    begin
      for i:=0 to Screen.FormCount-1 do
        if Screen.Forms[i].ClassType = TDevResFrm then begin
          Screen.Forms[i].Show;
          exit;
        end;
      DevResFrm := TDevResFrm.Create(Application);
      DevResFrm.Show;
    end;
      

  7.   

    这段话怎么可能起作用呢?if的条件是不会成立的,我说的停顿是create的时候停顿,不是在create完了之后的每次show停顿
      

  8.   

    关闭DevResFrm的时候在DevResFrm.onclose中 action:=caFree;DevResFrm:=nil;