我在程序的运行过程中拖动组件,我如何让鼠标在拖动组件时,只能向上移动,不能向别的任何方面移动呢,,谢谢。。。(200分)

  • 主题发起人 主题发起人 zhangqinghe
  • 开始时间 开始时间
Z

zhangqinghe

Unregistered / Unconfirmed
GUEST, unregistred user!
我在程序的运行过程中拖动组件,我如何让鼠标在拖动组件时,只能向上移动,不能向别的任何方面移动呢,,谢谢。。。
 
那就在你处理拖动组件的事件中,只做Y向上的方向的处理就行了。
 
procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
//关键的 取得oldy, 你想想办法
if Oldy<y then
begin
ReleaseCapture;
panel1.perform(WM_sysCommand, $F017,0);
end;
end;
 
用个Timer,在定时器中用ClipCursor限制鼠标的区域:
比如取得当前鼠标位置为X,Y,那么
var R:TRect;
begin
R := Rect(X, 0, X, Y);
ClipCursor(@rtScreen);
这样鼠标就只能向上,当鼠标向上移动了一点,立刻重新设定鼠标区域的下届,应该能满足你的要求。
 

Similar threads

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