Forms delphi..Onactive按钮消除可用表单的混淆

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上有一个按钮,我需要禁用它….(在某些情况下

嘿,我在做delphi 7, 我有一个可用表单的场景, 我有两张表格

  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中创建;它成功了。!!