SBMF必须在Free后,清为nil。否则当然不行。

解决方案 »

  1.   

    我试过,这样可以的,但你必须Tsbmf窗体是动态创建的,
    如:
    program Project1;uses
      Forms,
      Unit1 in 'Unit1.pas' {Form1},
      Unit2 in 'Unit2.pas' {Form2};{$R *.res}begin
      Application.Initialize;
      Application.CreateForm(TForm1, Form1);
    //Application.CreateForm(TSBFM, SBFM);  Application.Run;
    end.
      

  2.   

    Assigned 这个函数只是检测 这个指针是否为Nil,而不能检测指针内容的有效性。
    这个类似于c里面的 xxx== NULL;
    而delphi里面你释放了指针指向的对象,指针不会变成Nil,
    所以你直接利用Assigned是没有办法知道他是否有效的。好的习惯是定义了指针之后给他初值 Nil,
    释放掉指针后也赋值 nil.
      

  3.   

    释放的时候要这样:
    SBMF.Free;
    SBMF := nil;如果你在OnClose中写
    Action := caFree;
    那么就非常头痛,因为总不能写Self := nil这样的代码吧。
      

  4.   

    将每次创建的窗体的name赋成不同的值试试
      

  5.   

    你可以用Create(Application)试一下