button1.left:=form1.left+button1.left;
button1.top:=form1.left+button1.top;

解决方案 »

  1.   

    噢错了,第二句应该是button1.top:=form1.top+button1.top; 
      

  2.   

      p, CP:TPoint ;
    begin
      dc := GetWindowDC(0);
      p.x:= button1.Left;
      p.y:= button1.Top;
      CP:= ClientToScreen(p);
      

  3.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      p: Tpoint;
    begin
      P := Button1.Parent.ClientToScreen(Point(Button1.Left, Button1.Top));
      ShowMessage(IntToStr(p.X) + '..' + IntToStr(p.Y));
    end;
      

  4.   

    zswang(伴水)(伤心中):
    GetWindowPos()?好像没有这个函数
      

  5.   

    这些控件一般都有clienttoscreen和screentoclient两个方法进行相关的操作。
      

  6.   

    var
      vRect: TRect;
    begin
      GetWindowRect(Button1.Handle, vRect);
    (*
      vRect.Left
      vRect.Top
    *)
    end;
      

  7.   

    我的方法不是最好的
    如果是SpeedButton、Image这种非Win控件就不行
    因为没有Handle了
      

  8.   

    谢谢大家的热心帮助,特别感谢zswang(伴水)(伤心中)的热心,结贴了.