Forms 表单关闭时发生简单代码和错误
告诉我,哪里有问题: 第一种形式:Forms 表单关闭时发生简单代码和错误,forms,delphi,Forms,Delphi,告诉我,哪里有问题: 第一种形式: procedure TForm2.N6Click(Sender: TObject); var About:TAbout; begin About:=TAbout.Create(Application); try About.ShowModal; finally About.Free; end; end; 第二种形式: procedure TAbout.Button1Click(Sender: TObject); begin About.
procedure TForm2.N6Click(Sender: TObject);
var About:TAbout;
begin
About:=TAbout.Create(Application);
try
About.ShowModal;
finally
About.Free;
end;
end;
第二种形式:
procedure TAbout.Button1Click(Sender: TObject);
begin
About.Close;
end;
在大约。关闭时,我收到错误:eaccess违规。我对表单About不做任何其他操作,About的代码为空,只需单击按钮。在TForm2.N6Click方法中声明
About
变量时,您不使用全局About全局变量
但是在About表单中,当您尝试调用About
变量上的Close
时,您使用全局变量,在本例中,该变量保持未初始化状态
尝试删除本地
About
声明,它应该可以工作。虽然Doug是对的,但最简单的解决方案是只进行更改
procedure TAbout.Button1Click(Sender: TObject);
begin
Close;
end;
无论如何,这是程序的“正确”版本。如果单击当前选项卡
表单(即Self
)的按钮1
,您自然希望关闭当前选项卡
表单(即Self
)。而Close
是Self.Close
在TAbout
类中的缩写
TAbout
是表单的一个类。您可以创建该类的任意数量的实例,即所谓的对象。通常,在项目中有一个全局About
变量,该对象在应用程序启动时自动创建。要显示这一点,您只需执行以下操作
procedure TForm2.N6Click(Sender: TObject);
begin
About.ShowModal;
end;
另一种方法是禁用自动创建About
表单(项目/选项),然后在每次需要时创建一个新实例。那你呢
procedure TForm2.N6Click(Sender: TObject);
var About:TAbout;
begin
About := TAbout.Create(nil);
try
About.ShowModal;
finally
About.Free;
end;
end;
无论如何,你想要
procedure TAbout.Button1Click(Sender: TObject);
begin
Close; // same thing as Self.Close;
end;
如果我点击右角的X(关闭)-一切正常!!!是的,道格纠正了错误的原因。是的,建议的变通办法是可行的,但实际上并不正确。通过在局部过程中使用全局变量创建并释放一个
TAbout
对象,您正在自食其果。看看我的答案。