[Warning] ufr_main.pas(53): Variable 'emp_form' might not have been initialized有什么办法可以避免这个警告现出现吗?尽管编译还是可以通过?或者说应该如何改下面的代码?procedure Tmainform.B01_CPClick(Sender: TObject);
var
  emp_form: Tfrm_emp;
begin
  if not empformisrunning then
  begin
    Tfrm_emp.Create(emp_form);
    empformisrunning := true;
  end
  else
  try
    emp_form.Show;
  except
  end;
end;

解决方案 »

  1.   

    procedure Tmainform.B01_CPClick(Sender: TObject);
    var
      emp_form: Tfrm_emp;
    begin
      if not empformisrunning then
      begin
        emp_form := Tfrm_emp.Create(Application);  //是不是应该这样
        empformisrunning := true;
      end
      else
      try
        emp_form.Show;
      except
      end;
    end;
      

  2.   

    谢谢你的回复,但如果按你这样改,又会变成“emp_form never used了
      

  3.   

    WGYKING(修罗是谁?!)   老大,应该如何改?别说一句吊住我啊
      

  4.   

    procedure TForm1.FormCreate(Sender: TObject);
    var
      Form2: TForm2;
    begin
      try
        Form2 := TForm2.Create(nil);
        Form2.ShowModal;
      finally
        FreeAndNil(Form2);
      end;
    end;
    这是一种方式
      

  5.   

    TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        Form2: TForm2;
      public
      end;procedure TForm1.Button1Click(Sender: TObject);
    begin
      if (not Assigned(Form2)) or (not Form2.Showing) then
        Form2 := TForm2.Create(nil);
      Form2.Show;
    end;procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      Action := caFree;
    end;这是另外一种方式
    主要是Show造成了这种情况
    应该定义全局变量和作为类的变量
      

  6.   


    这么快就结贴
    既然你采用这种方式
    就应该将Options...->AutoCreate Forms中的除主窗体全部移去还有就是在非主窗体中
    已经定义了一个该窗体类的全局变量
    就看你怎么用了