如何判断一个窗体是否已经存在了
procedure TFmmain.N9Click(Sender: TObject);
var
  fm:tform;
begin
  begin
    fm:=tfmproj.Create(self);
    fm.FormStyle:=fsmdichild;
end;
当我在一次点击时有出现一个一样的窗体;我想如果它已经存在的话就不要在创建了
fmproj就是显示的窗体

解决方案 »

  1.   

    type
      TForm1 = class(TForm)
        procedure N9Click(Sender: TObject);
        procedure FormDestroy(Sender: TObject);
      private
        { Private declarations }
        fm: tform;
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.DFM}procedure TFmmain.N9Click(Sender: TObject);
    begin
      if not Assigned(fm) then
      begin
        fm := tfmproj.Create(self);
        fm.FormStyle := fsmdichild;
      end;
    end;procedure TForm1.FormDestroy(Sender: TObject);
    begin
      fm.Free;
    end;
      

  2.   

    假如:你想打开FORM2:
    if not assigned(form2) then
    begin
      form2:=Tform2.Create(self);
      form2.Show();
    end
    else
      begin
      form2.BringToFront;
      form2.SetFocus;
      end;
      

  3.   

    if not assigned(FormName) then
       FormName := TFormName.create(self);
    FormName.show;
      

  4.   

    用這個函數肯定行procedure OpenForm(FormClass: TFormClass; var fm; Owner: TComponent);
    var Child:TForm;
            i:integer;
    begin
        for i:=0 to Screen.FormCount-1 do
        begin
                if (Screen.Forms[i] is FormClass) then
                begin
                        Child:=Screen.Forms[i];
                        if not Child.Visible then Child.Visible:=true;
                        if Child.WindowState=wsMinimized then
                        Child.WindowState:=wsNormal;
                        Child.BringToFront;
                        exit;
                end;
        end;
        FormClass.NewInstance;
        Child:=FormClass.Create(Owner);
        TForm(fm):=Child;
    end;
      

  5.   

    try
      fm.show();
    except
      fm := tfmproj.Create(self);
    end;
      

  6.   

    begin
      if not Assigned(user_manage_form) then
         user_manage_form:=Tuser_manage_form.Create(Application);
      user_manage_form.Show;
    end;
      

  7.   

    47522341(睡到8:30)(最是她一低头的温柔) 
    if not assigned(FormName) then
       FormName := TFormName.create(self);
    FormName.show;这个很简结;
      

  8.   

    怎么可能。
    if not assigned(yourform) then begin
     application.createform(TYOurform,yourform);
     try
     yourform.showmodal
    finally
     yourform.free
     yourform:=nil;
     end;
    end;
    else
     yourform.showmodal
    end;
      

  9.   

    释放前置成nil,生成前判断是nil再生成!
      

  10.   

    如果是MDI窗體的話﹐按照我上面給的一個過程進行調用﹐肯定沒什么問題如果窗體已經存在﹐就不會創建新的窗體﹐直接顯示出來﹐如果不存在﹐就創建窗體并顯示出來
    調用格式OpenForm(FormClass,FormName,Owner)
      

  11.   


    if not assigned(FormName) then
      begin
        FormName:=Tform2.Create(self);
        try
          FormName.FormStyle := fsmdichild;
          FormName.ShowModal();
        Finally
          FreeAndNil(FormName);
        end;
      end;
    或者
    if not assigned(FormName) then
      begin
        FormName:=Tform2.Create(self);
        try
          FormName.FormStyle := fsmdichild;
          FormName.Show();
        Finally
          FreeAndNil(FormName);
        end;
      end
    else
      begin
        form2.BringToFront;
        form2.SetFocus;
      end;
      

  12.   

    if Assigned(object) then
       已经存在
      

  13.   

    try
      FormName.show;
    except
      FormName:=TFormName.create(application);
    end;
      

  14.   

    if assigned(object) then表示存在
      

  15.   

    if Application.FindComponent('Form2')<>Nil then
       Form2.Show
    else
      TForm2.Create(Application);
      

  16.   

    1.用个变量,保存form的handle
      if formhandle=0 then
        yourform.create;
      yourform.show;
    2.if yourform=nil then
       yourform.create;
      yourform.show;
      

  17.   

    if not assigned(FormName) then
       FormName := TFormName.create(self);
    FormName.show;
    procedure TForm1.Formclose(Sender: TObject);
    begin
      formname.Free;
    end;
    procedure TForm1.FormDestroy(Sender: TObject);
    begin
    formname:=nil;//free掉了还好把它的指针清空
    end;