我现在动态生成了一个BUTTON,现在想点击这个BUTTON弹出一个动态窗体(form),form的位置在按钮的上方或者下方(根据按钮的位置具体定是在它的下方还是上方,例如是在BUTTON的上方的话,那么form的下边框和BUTTON的上边框重合),BUTTON在form的中间 本人急用,在线等用摆脱各位大侠不吝赐教。
解决方案 »
- 重装了Deplhi后,Sample这个面板不见了是怎么回事
- delphi 内联汇编问题
- 请教高手:关于mmtools的问题
- delphi2006ado连接oracle数据库,提示无效列名
- 关于intraweb的问题---关于实时数据的问题!----------巨难!!!!!!!
- 揭露这种公司的恶行。。。南京的朋友要小心。。。大家来看看,南京公司的丑恶。
- QReport...
- 大家做帮助文件都用什么软件?谁有Visual CHM V4.0的正式版?
- 用nmudp控件做intenet聊天程序,要消息重发吗(发送未成功等)?还是它自己会处理?
- 为什么我安装FlatStyle控件时总是出现这样的错误:[Fatal Error] FlatStyle_D5.dpk(54): Internal error: URW3010--,不是知道是什么原因,我试过好多次了,都是一样的,请帮我解答一下,谢谢!!
- 请问在DELPHI中这样的代码该如何写?
- 请教dll中函数参数的默认值问题?
var P : TPoint; GetCursorPos(P);当然你要取button的top和left来决定
form的top和letf值就行了
var
Pos1,pos2:TPoint;
begin
Pos1.X := Self.Button1.Left;
Pos1.Y := Self.Button1.Top;
pos2 := ClientToScreen(Pos1);
end;再设置好form的TOP和LEFT.
弹出到按钮上面:
form.left := pos2.x;
form.top := pos2.y - form.Height;弹出到按钮下面:
form.left := pos2.x;
form.top := pos2.y + Self.Button1.Height;
比如说我在连续生成了几行的BUTTON
现在点了中间那一个,怎么获得啊
procedure form.buttonclick(sender: Tobject);
var
Pos1,pos2:TPoint;
begin
Pos1.X := TButton(sender).Left;
Pos1.Y := TButton(sender).Top;
pos2 := ClientToScreen(Pos1);
end;
动态创建的Button的单击事件都指到ShowClick函数.将上面
Pos1.X := Self.Button1.Left;
Pos1.Y := Self.Button1.Top;
pos2 := ClientToScreen(Pos1);
改成
Pos1.X := TButton1(Sender).Left;
Pos1.Y := TButton1(Sender).Top;
pos2 := ClientToScreen(Pos1);