(100分)组件相对于屏幕的位置(想在一个组件下实现弹出窗体) (100分) ( 积分: 0 )

  • 主题发起人 主题发起人 3304xfq
  • 开始时间 开始时间
3

3304xfq

Unregistered / Unconfirmed
GUEST, unregistred user!
一个窗体上.
Form
->Panel
->ab
->...
..
->Label;
Label,我想在它的点击事件后在这个的下面显示一个窗口
有点像主菜单的弹出那样
我现在定位时搞不好了
如果是Mouse.X,Y那么一定是位置不一定,可能是Label上
如果是ClienttoScreen,那么X,y可能是父组件的位置
请问怎么得到一个组件相对于屏幕的位置
 
一个窗体上.
Form
->Panel
->ab
->...
..
->Label;
Label,我想在它的点击事件后在这个的下面显示一个窗口
有点像主菜单的弹出那样
我现在定位时搞不好了
如果是Mouse.X,Y那么一定是位置不一定,可能是Label上
如果是ClienttoScreen,那么X,y可能是父组件的位置
请问怎么得到一个组件相对于屏幕的位置
 
这个我也想知道呀。
也不知道有谁知道呀。
 
var abc:TForm2;
procedure label1click(sender);
var P:TPoint;
begin
if not assiged(abc) then
abc:=TForm2.create(nil);
P.x:=Label1.left;
P.y:=Label1.top+Label1.hight;
abc:=clienttoscreen(abc);
abc.left:=p.x;
abc.top:=p.y;
abc.show;
end;

上面代码在窗体abc第一次创建时定位不对,有时是top=0,也就是在屏幕顶端,有时在一个左(右)=label在自己窗体的左(右),就是说abc:=clienttoscreen(abc);这句不起作用似的

但是第二次点击时,也就是abc不用再创建时他能显示正常

请问这是为什么
 
好饿呀/快下班了
 
后退
顶部