unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementationuses Unit2;{$R *.dfm}procedure TForm1.Button2Click(Sender: TObject);
begin
Form2 := TForm2.Create(self);
Form2.ShowModal ;
Form2.Free;//执行这一句一切正常
Form2.Free;//执行这一句Form1 将不可视,请问这是为什么
end;end.附:
Free 不是可以自动判断对象是否为空吗?
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementationuses Unit2;{$R *.dfm}procedure TForm1.Button2Click(Sender: TObject);
begin
Form2 := TForm2.Create(self);
Form2.ShowModal ;
Form2.Free;//执行这一句一切正常
Form2.Free;//执行这一句Form1 将不可视,请问这是为什么
end;end.附:
Free 不是可以自动判断对象是否为空吗?
Form2.Free;//执行这一句Form1 将不可视,请问这是为什么
都是form2.Free吗?执行这一句Form1 将不可视是什么意思。
把代码改成FreeAndNil(Form2);试试
Form2.Free;//执行这一句后Form1看不到了,按理说这不关Form1的事,请问这是为什么 为什么对Form2进行2次FREE 之后会导致FORM1不可视呢
只是要讨论而已 !!!!
第二个我也知道没有意义
但是如果你在两个FREE 之间加入一个MESSAGEBOX
那你肯定会有很大的麻烦 !
不信你可以试一下
感谢各位朋友的参与
现在本人结贴。