Z zhangqinghe Unregistered / Unconfirmed GUEST, unregistred user! 2004-05-27 #1 我在程序的运行过程中拖动组件,我如何让鼠标在拖动组件时,只能向上移动,不能向别的任何方面移动呢,,谢谢。。。
陈 陈健松 Unregistered / Unconfirmed GUEST, unregistred user! 2004-05-27 #2 那就在你处理拖动组件的事件中,只做Y向上的方向的处理就行了。
X xuxiaohan Unregistered / Unconfirmed GUEST, unregistred user! 2004-05-27 #3 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;
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;
T TYZhang Unregistered / Unconfirmed GUEST, unregistred user! 2004-05-27 #4 用个Timer,在定时器中用ClipCursor限制鼠标的区域: 比如取得当前鼠标位置为X,Y,那么 var R:TRect; begin R := Rect(X, 0, X, Y); ClipCursor(@rtScreen); 这样鼠标就只能向上,当鼠标向上移动了一点,立刻重新设定鼠标区域的下届,应该能满足你的要求。
用个Timer,在定时器中用ClipCursor限制鼠标的区域: 比如取得当前鼠标位置为X,Y,那么 var R:TRect; begin R := Rect(X, 0, X, Y); ClipCursor(@rtScreen); 这样鼠标就只能向上,当鼠标向上移动了一点,立刻重新设定鼠标区域的下届,应该能满足你的要求。