var p: TPoint; begin p.X := image.left; p.Y := image.top; p := ClientToScreen(p); ShowMessage(IntToStr(p.X)); end;
我有一个笨方法就是你看你这个控件(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;
p: TPoint;
begin
p.X := image.left;
p.Y := image.top;
p := ClientToScreen(p);
ShowMessage(IntToStr(p.X));
end;
原码如下: 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;
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;点击按钮处弹出一个窗体