比如我在一个scrollbox里画了一个image框,当鼠标点中这个image框的时候我取得的image.left和image.top都是相对scrollbox的坐标。可不可以取得这个image框在整个screen上的坐标呢?在线等高手出现。

解决方案 »

  1.   

    var
      p: TPoint;
    begin
      p.X := image.left;
      p.Y := image.top;
      p := ClientToScreen(p);
      ShowMessage(IntToStr(p.X));
    end;
      

  2.   

    我有一个笨方法就是你看你这个控件(scrollbox)外还有什么控件再加上窗体的位置就可以算出当前控件的位置了,方法没有上边那位老兄的高明,不过小弟还是曾经用这个解决的问题呢~~
    原码如下:         if edit.Left +vpanel.Width+20>vpanel.Parent.Width then
             begin
                Vpanel.Left:=edit.Left-(Vpanel.Width-edit.Width);
             end
             else
             begin
                Vpanel.Left :=edit.Left;
             end;
             Vpanel.Top :=edit.Top +edit.Height +2;
             Vpanel.Visible:=true;
      

  3.   

    看了weizi2000(秋风啊-秋的叹息) shitianj(仲) 两位的方法,解决了我的问题,特此表示感谢!var
      pos:TPoint;
    begin
      SelectGroup:=TSelectGroup.Create(nil);
      pos.X:= selectgroup_bt.left;
      pos.Y:= selectgroup_bt.top;
      pos:= ClientToScreen(pos);
      SelectGroup.Left:=pos.X+5;
      SelectGroup.Top:=pos.Y+SelectGroup_bt.Height+4;
      SelectGroup.ShowModal;
      SelectGroup.FreeOnRelease;
    end;点击按钮处弹出一个窗体