大家帮帮忙啊,这个问题卡死我了:(Form1中添加一个Button,其响应如下:procedure TForm1.Button1Click(Sender: TObject);
var Form2 : TForm2;
begin
  Form2 := TForm2.Create(Application);
  Form2.ShowModal;
end;这样弹出Form2,结果在Form2中就只能得到最初的设定时的Left和Top,即使移动了Form2,也获取不到改变后的值。
然而在Form1中却可以获得Form2移动后的Left和Top。真是郁闷。我需要在Form2中获得自己Left和Top的值阿

解决方案 »

  1.   

    procedure TForm1.Button1Click(Sender: TObject);
    begin
      Form2 := TForm2.Create(Application);
      Form2.ShowModal;
    end;去掉var Form2 : TForm2;,这个会屏蔽另一单元中定义的Form2,当然产生了你看到的效果!因为你以后调用的Form2是另一单元文件中的Form2,和这里的Form2不是同一个窗体实例!
      

  2.   

    这样做:
    try
      Form:=TForm.Create(Self);
      Form.ShowModal;
    finally
      Form.Free;
    end;
      

  3.   

    To ehom:去掉连编译都通不过
    我这么改procedure TForm1.Button1Click(Sender: TObject);
    var FormTest : TForm2;
    begin
      FormTest := TForm2.Create(Application);
      FormTest.ShowModal;
    end;可还是不行,第二个窗体中就是得不到自身的Left和Top值的改变。:(
      

  4.   

    当然还要uses Unit2;啊如果一定要用个变量,也应该是把FormTest设为全局变量!只要你自己不写错,一定可以编译通过!
      

  5.   

    经我试验,没有问题啊?不知道你的程序是什么样的?(不过你的Form2可不要设在自动创建上.因为如果那样就有问题了,因为那个Form2和你后来创建的Form2不是一个窗体,而且不可见,这样它的位置当然就是不变的了.)