下面代码有什么问题?为什么没有弹出新窗口呢
procedure TForm1.Button1Click(Sender: TObject);
var form2:tform;
begin
if not assigned(form2) then
Form2:=Form2.create(self);
Form2.show;
form2.Name :='TEST';
end;

解决方案 »

  1.   

    form2作为临时变量,一开始不会被赋初值为nil,所以assigned(form2)的值是true
    要么把条件语句去掉好了
      

  2.   

    哦,不好意思,没仔细看你的意思     Application.CreateForm(TForm,form2);
        Form2.show;
        form2.Name :='TESTdff';
      

  3.   

    Form2.bringtofront 也有可能你的form1是modal
      

  4.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      form2:tformMy; //Tform是一个抽象的基类,这里必须是 你自己继承实现的一个form类才行
    begin
      //if not assigned(form2) then
      Form2:=TFormMy.create(self);
      Form2.show;
      form2.Name :='TEST';
      //注意这个form2没有释放,只会在form1释放是时候被自动释放
    end;
      

  5.   


    procedure TForm1.Button1Click(Sender: TObject);
    var form2:tform;
    begin
    //if not assigned(form2) then
    //Form2:=Form2.create(self);
    Application.CreateForm(TForm,form2);
    Form2.Show;
    form2.Name :='TEST';
    end;
      

  6.   

    var form2:tform;
    form2定义为一个局部变量的话,if not assigned(form2)总是会返回True的,程序结构不正确。Form2:=Form2.create(self);这一句改为
    Form2 := TForm2.Create(self)
    必须是类(TForm2)才能Create
      

  7.   

    那我想在新窗口里创建一个控件应该怎么做呢?如创建一个memo
      

  8.   

    正确的写法:procedure TForm1.Button1Click(Sender: TObject);
    begin
    if not assigned(form2) then
    Form2:=TForm2.create(self);
    Form2.show;
    form2.Name :='TEST';
    end;
      

  9.   


    动态创建的话可以
    var Memo: TMemo;begin
      Form2:=TForm.Create(self);
      Memo:=TMemo.Create(self);
      Memo.Parent:=Form2;
      Form2.Show;
    end;
      

  10.   

    如果你窗体也是动态创建的话,代码应为var
      Form2: TForm;
      Memo: TMemo;
    begin
      Application.CreateForm(TForm, Form2);
      Form2.Show;
      Memo := TMemo.Create(self);
      Memo.Parent := Form2;
      Form2.Name := 'TEST';
    end;