Forms delphi..Onactive按钮消除可用表单的混淆
嘿,我在做delphi 7, 我有一个可用表单的场景, 我有两张表格Forms delphi..Onactive按钮消除可用表单的混淆,forms,delphi,delphi-7,Forms,Delphi,Delphi 7,嘿,我在做delphi 7, 我有一个可用表单的场景, 我有两张表格 1. FormOne 2. FormTwo FormOne有一个按钮 单击哪个按钮创建FormTwo var Form2:TForm2; begin Form2:=TForm2.Create(nil); Form2.ShowModal ; Form2.Free; end; 在Form2上有一个按钮,我需要禁用它….(在某些情况下
1. FormOne
2. FormTwo
FormOne有一个按钮
单击哪个按钮创建FormTwo
var
Form2:TForm2;
begin
Form2:=TForm2.Create(nil);
Form2.ShowModal ;
Form2.Free;
end;
在Form2上有一个按钮,我需要禁用它….(在某些情况下)。。
所以在激活的表单2时,我这样做了
if assigned(Form2) then
begin
Form2.Button1.Enabled:=False;
end;
这就是im检查表单是否已创建,然后禁用按钮。。
由于代码处于激活状态,这意味着已经根据delphi表单liyfe cyle创建了表单2
OnCreate->OnShow->OnActivate->OnPaint->OnResize->OnPaint
..因此按钮1应该被禁用..但它未被禁用
我猜
Form2
是按钮单击处理程序中的局部变量;在您的OnActivate
处理程序中,您正在从定义了TForm2
的单元测试一个全局Form2
变量;如果TForm2
不是自动创建的表单,则不分配第二个 或未分配“Form2”。将断点置于“如果已分配”(..).使用断点-'form2=nil'y创建时是否为nil?因为您在unit1中创建表单时没有告诉'unit2.form2:=form2'。SertacAkyuz您能解释一下吗..我不明白您在unit1中声明了一个局部'form2'变量,它与unit2中的'form2'变量不同,只是它们的名称相同。'“unit2”中的m2'即“unit2.Form2”保持未分配状态。是的..得到了正确答案..我删除了变量Form2:TForm2;并直接从全局变量Form2:TForm2中创建;它成功了。!!