主要问题是,您创建了 2 个TForm2
.
你的.dpr
文件看起来像这样
begin
Application.Initialize;
Application.CreateForm( TForm1, Form1 );
Application.CreateForm( TForm2, Form2 );
Application.Run;
end.
创建TForm2
in的实例TForm1.OnCreate
并将此实例保存到全局变量Form2
中后,将创建另一个实例TForm2
并将其存储到Form2
.
如果TForm1.btn5.OnClick
您处理第二个创建的,不可见的TForm2
。
解决方案
- 转到项目/选项->公式并
TForm2
从自动创建列表中删除
TForm2
将创建的实例存储TForm1
在的私有类字段中TForm1
您的代码应如下所示
.dpr文件:
begin
Application.Initialize;
Application.CreateForm( TForm1, Form1 );
Application.Run;
end.
单元1.pas
TForm1 = class( TForm )
...
procedure FormCreate( Sender : TObject );
procedure btn2Click( Sender : TObject );
private
FForm2 : TForm2;
...
end;
procedure TForm1.FormCreate( Sender : TObject );
begin
FForm2 := TForm2.Create( Self );
FForm2.Parent := Panel1;
FForm2.Show;
end;
procedure TForm1.btn2Click( Sender : TObject );
begin
FForm2.btn.Enabled := True;
end;