程序需要动态的获取Form想对于屏幕的Left、Top等位置
利用Form.Left得不到,该怎么获取呢?

解决方案 »

  1.   

    刚才试了一下,在程序的主窗体中可以获取Form的Left属性。
    而通过ShowModal调用的窗体则无法动态的获得其Left属性,即使挪动窗体,读出来的Left值仍然没有变化,不知道为什么?可不可以通过API函数获取窗体的Left、TOP值,怎么获取?
      

  2.   

    var
      rect: TRect;
    begin
      GetWindowRect(Form1.Handle, rect);
      ShowMessage(IntToStr(rect.Left) + ',' + IntToStr(rect.Top));
    end;
      

  3.   

    谢谢sysu。
    不过这个方法和直接读取Form.Left属性的结果是一样的,对于用ShowModal调用的窗体,不好用,不知道为什么?
      

  4.   

    不知你怎么获取的
    我ShowModal的窗体Left,Top当移动时都变化了
      

  5.   

    是不是我ShowModal的问题?
    我是这么做的: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。真是郁闷。