我在Project->Options… 中的Forms 一页把Form2放置在 Available forms中,保留Form1在Auto-create forms中,让Form1在程序一开始运行就创建。
在form1中定义
procedure TForm1.ButtonClick(Sender: TObject);
//  if not Assigned(form2) then Form2:= TForm2.create(application);
  Application.CreateForm(TForm2,Form2);   
  Form1.Show ;
  end;在form2中定义
procedure TForm2.FormCreate(Sender: TObject);
begin
    label1.Caption :='asdf';
end;
可是form2中的label1总是不能更新

解决方案 »

  1.   

    procedure TForm1.ButtonClick(Sender: TObject); 
      Form1:=TForm1.Create(Self);
      Form2.label1.Caption :='asdf'; 
      Form1.Show;
    end; 
    procedure TForm2.FormCreate(Sender: TObject); 
    begin 
        label1.Caption :='asdf'; 
    end; 上面的两个label1.Caption :='asdf';应该都可以
      

  2.   

    我上面写错了
    在form1中
    form1.show改为form2.show;
    我试 了就是不成功
    能不能在说的详细一点
      

  3.   

    呵呵,这么多个说了代码没有问题,那应该没有问题了。
    楼主可以考虑下,自己调试语句,也可以用showmessage,看看语句是否执行
    或者,是否onshow中有对label又做初始化,或者,索性把form2Create中的事件写到onShow事件中去 !
      

  4.   

    procedure TForm1.Button1Click(Sender: TObject);
    begin
      Form2 := TForm2.Create(Application);
      Form2.Show();
    end;procedure TForm2.FormCreate(Sender: TObject);
    begin
      Label1.Caption := 'abc';
    end;在Form1中创建,没有一点问题啊。注意:Form2 := TForm2.Create(Application),而不是 Create(Self),即父容器是Application而不是Form1。
      

  5.   

    代码应该是没有问题的。 不过你要确认在 form2的 Create,Show事件里没有再写其它的代码???
      

  6.   

    在onshow事件里面不能更新吗?
      

  7.   

    只能单步调试了,再看看EVENTS编辑框里的,oncreate 事件指向的过程名称是否正确?
      

  8.   

    測試通過,應該是你代碼中的其它地方有改變form2中的label1的值。
      

  9.   

    Label1的属性是怎么设置的?是不是把AutoResize给设置成False了,这样更改Caption时由于不能自动改变大小而不能完全显示出来
      

  10.   

    测试没有问题。Label1被改变!应该是你程序其他原因!