菜鸟求救:请问怎么得到鼠标的位置?(20分)

  • 主题发起人 主题发起人 孤独男孩
  • 开始时间 开始时间

孤独男孩

Unregistered / Unconfirmed
GUEST, unregistred user!
菜鸟刚刚开始接触delphi求救:

我想做一个按钮,然后按钮可以在鼠标移动的时候移动,

也就是不让鼠标点击到按钮,请问代码应该怎么写?

谢谢!
 
原理可以这样。
1、在button的onmousemove事件里写代码改变button的left和top,
效果是鼠标一移动到按钮上按钮就跑,来不及按下。
2、在form的onmousemove事件里写代码,改变button的left和top,使之不等于事件中的
参数x,y
效果:只要鼠标移动,按钮就一直跑,就是不让鼠标移动到自己的头上。
如果还是不会再给你写上代码。自己试试,初学的时候我也写过这个玩哎。呵呵
 
但是关键是代码怎么写呀?我知道原理呀。。

难道就是

button1.left = mouse.x + onevalue ?

请告诉我具体代码,谢谢!
 
procedure TForm1.Button1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
button1.Top:=random(340-button1.Height);
button1.Left:=random(530-button1.Width);
end;
可实现button在form中的随机跳跃,但无法跳出form.其中340,530分别为form的top,width
 
同理,也可以根据你设定的任意曲线方程移动,自己试试吧。[:D]
 
procedure TForm1.Button4MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var
i:integer;
begin
Randomize;
i:=Random(3);//随机定按钮移动的方向
case I of
0: Button4.Left:=button4.left+80;
1: Button4.Left:=button4.left-80;
2: Button4.top:=button4.top+80;
3: Button4.top:=button4.top-80;
end;
//如果按钮移动到窗体外面那么就把它拉回来
//也可以判断如果超出窗体那么随机定它的位置
//这里如果超出就拉回到一个固定位置
if Button4.left<0 then Button4.left:=120;
if Button4.left>Width-button4.Width then Button4.left:=120;
if Button4.top<0 then Button4.top:=120;
if Button4.top>self.ClientHeight-button4.Height then Button4.top:=120;
end;
 
但是万一 randon 的值恰好在鼠标的位置上呢?

能不能够得到鼠标的位置,判断如果在鼠标的位置上需要重新 random?

谢谢!
 
呵呵,这是个逻辑问题,但恰好random到鼠标上,就会重新触发mousemove,然后重新
random!!!所以你完全不必担心。
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部