如:
    
    frm_QuoteEdit_add := Tfrm_QuoteEdit.Create(self);procedure Tfrm_QuoteEdit.FormClose(Sender: TObject; var Action: TCloseAction);
begin
     Action := caFree;
end;   当第二次运行frm_QuoteEdit_add := Tfrm_QuoteEdit.Create(self);
时回报错,有没有一种方法判断它是否已经实例化,如果已经实例化就执行:frm_QuoteEdit_add.show

解决方案 »

  1.   

    在你的FormDestroy事件中加上
    frm_QuoteEdit:=nil然后
    if frm_QuoteEdit=nil then  frm_QuoteEdit_add := Tfrm_QuoteEdit.Create(self);
    frm_QuoteEdit.Show;
      

  2.   

    if not assigned(frm_QuoteEdit_add) then
       frm_QuoteEdit_add := Tfrm_QuoteEdit.Create(self);
      

  3.   

    if not Assigned(frm_QuoteEdit_add) then ...
      

  4.   

    还是不行!    if not assigned(frm_QuoteEdit_add)  then
        begin
        frm_QuoteEdit_add := Tfrm_QuoteEdit.Create(self);
        end
        else
        begin
        frm_QuoteEdit_add.Show ;
        end;再次运行还是会报错!
      

  5.   

    procedure Tfrm_QuoteEdit.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
         Action := caFree;
    end;
    procedure Tfrm_QuoteEdit.FormDestroy(Sender:TObject);
    begin
      frm_QuoteEdit_add:=nil;
    end;
      

  6.   

    一般可以判断是否为nil或用assigned方法,但不是很保险,除非你每次free一个对象后都把它给赋值为nil