var form : TMainForm;
begin
    form := TMainForm.Create(self);
    form .Show();
end;通过这种方式动态创建的窗体~怎么在其他过程将它终止~释放!
怎么截获动态窗体上的事件?

解决方案 »

  1.   

    procedure formshow(Sender : TObject);
    begin
    ...
    end;procedure formclose(Sender : TObject); //参数不一定这么多,参考
    begin
      action := caFree;
    end;var form : TMainForm;begin
        form := TMainForm.Create(self);
        
        form.onshow := formshow;
        form.onclose := fomrclose;     form .Show();
    end;
      

  2.   

    if assigned(frm)  then
      frm.Close;
      

  3.   

    窗体不仅一个,要关闭一个动态窗体,就一起把所有的动态窗体一起close.
      

  4.   

    其它窗体先要引用那个窗体对应的单元, 再用
    if Assigned(Form) then
      

  5.   

    if Assigned(Form) then
      FreeAndNil(Form);
      

  6.   

    if Assigned(Form) then
      FreeAndNil(Form);这个应当在什么情况下用?  用在什么地方.
      

  7.   

    if Assigned(Form) then
      FreeAndNil(Form);这个应当在什么情况下用?  用在什么地方.
    --------------
    关闭你动态创建的窗口
    用一个按钮控制即可我觉得你还是把你要做成什么样的效果说具体了
      

  8.   

    var form : TMainForm;
    begin
        form := TMainForm.Create(self);
        form .Show();
    end;TMainForm.Create(self);说明当owner释放的时候自动释放if Assigned(Form) then
      FreeAndNil(Form);
    当FreeAndNil之后,如果再次应用Form,出现错误,直接close就行了,然后在Onclose里面写Action :=CaFree就行了。
      

  9.   

    var
      Form1: TForm1;
      f:array[0..4] of TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    var
     i:integer;
    begin
     for i := 0  to  4 do
     begin
      f[i] := TForm1.Create(self);
      f[i].Show;
     end;
    end;procedure TForm1.Button2Click(Sender: TObject);
    var
     i:integer;
    begin
      for i := 0  to  4 do
     begin
      if Assigned(f[i]) then
      freeAndNil(f[i]);
     end;
    end;
      

  10.   

    问题是 关闭 动态生成的窗体的时候父窗体没关掉哦 用以上方法 当关闭父窗体的时候都会, access violation at 0x300b3ac0 read of address 0x300b3ac0
      

  11.   

    问题是 关闭 动态生成的窗体的时候父窗体没关掉哦 用以上方法 当关闭父窗体的时候都会, access violation at 0x300b3ac0 read of address 0x300b3ac0------------------
    注意关闭是点主窗体上的关闭按钮
    我没出现你的错误