打开一个新的窗口一般用
VAR
  newwin:Tmyform1;
Begin
  newwin:=Tmyform1.creat(self);
  newwin,show;
End
为什么不直接 用 myform1.shwo;2 
如果用下面方式打开窗口
VAR
  newwin:Tmyform1;
Begin
  newwin:=Tmyform1.creat(self);
  newwin.show;
End在打开的窗口中应用CLOSE和在主窗口中执行newwin.free 以及 newwin.Release是否相同3
delphi-project-optings-forms中的两个窗口
auto-create和Avalable中的内容有什么差别,如何设定?

解决方案 »

  1.   

    本来就可以直接用myform1.show;
    你那样的窗体调用写法,
    是因为delphi-project-optings-forms,myform1是属于Avalable的.
    auto-create和Avalable:分别说的是,程序启动时自动创建窗体和不创建。
    如果是Avalable的,则需要用
     newwin:=Tmyform1.creat(self);
      newwin,show;
    先创建,然后来调用窗口
      

  2.   

    form.free直接释放资源后,调用onDestroy事件,但是没有将form改为nil
    form.release等待资源不再使用后释放资源,同样不修改form指针为nil,所以在destroy中最好使用release进行资源释放操作。
      

  3.   

    我也是新人,,说说对这几个问题的认识,,回答得不好,别喷~~
    1,这是个动态创建的问题
      newwin:Tmyform1;声明一个类的对象(该对象未创建指向0x0000..)  newwin:=Tmyform1.creat(self);调用构造方法创建一个类大小的地址块(该对象指向该地址)
      newwin.show;
    2.刚自己试了下from.free
    procedure TObject.Free;
    begin
      if Self <> nil then
        Destroy;
    end;
    from.release却是向系统发送个消息
    procedure TCustomForm.Release;
    begin
      PostMessage(Handle, CM_RELEASE, 0, 0);
    end;
    3.auto-create和Avalable字面意思是自动创建及可得到的。
    auto-create:在创建应用程序的时候
    begin
      Application.Initialize;
      Application.CreateForm(TForm1, Form1);
      Application.Run;
    end.
    就创建了该From然后读入到了内存。
    Avalable:非自动的,对于那些用户不一定用得到的From就放在这里~
    {望指正!}