我在Button1的OnClick事件中动态产生一个窗体,没点击一次就生产一个,请教如何
控制在点击之前如果该窗体存在则不生成,反之则生成。

解决方案 »

  1.   

    参照一下
    procedure OpenChildForm(FormClass: TFormClass; var Fm; AOwner:TComponent);
    var
      i: integer;
      Child:TForm;
    begin
      for i := 0 to Screen.FormCount -1 do
          if Screen.Forms[i].ClassType=FormClass then
          begin
            Child:=Screen.Forms[i];
            if Child.WindowState=wsMinimized then
               ShowWindow(Child.handle,SW_SHOWNORMAL)
            else
               ShowWindow(Child.handle,SW_SHOWNA);
            if (not Child.Visible) then Child.Visible:=True;
            Child.BringToFront;
            Child.Setfocus;
            TForm(Fm):=Child;
            exit;
          end;
      Child:=TForm(FormClass.NewInstance);
      TForm(fm):=Child;
      Child.Create(AOwner);
    end;procedure TMainForm.Button1Click(Sender: TObject);
    begin
      OpenChildForm(TChildForm1,ChildForm1, Self);
    end;
      

  2.   

    procedure Tform1.buttonclick(sender: TObject);
    var
      form2: Tform2;
    begin
      if assigned(form2) then
        form2:=Tform2.create(self);
      form2.show;
    end;procedure Tform2.formclose(Sender: TObject; var Action:TCloseAction);
      
    begin
      form2:=nil;
      action:=cafree;
    end;
      

  3.   

    我记得有个API叫FindWindow可以的,不过不太记得怎么用了,你可以查一下
      

  4.   

    好像simonzone(我很菜,可是我很温柔!) 同学说的不错!
    SmallMaker(小人物) 的代码量太大,不想看!
      

  5.   

    1.用findWindow()(Api函数)
    2.判断xxxForm是否为nil 如果是就创建不是就Show
    注意在窗体关闭事件加入xxxForm:=nil