如何判断当前鼠标的状态??比如:按下、松开、移动等(50分)

  • 主题发起人 主题发起人 san_fish
  • 开始时间 开始时间
to pcc_mmz1:
太谢谢你了,现在已经实现了放开左键时停止滚动
但又有问题了:按下那个按钮后(也相当于你上面的那个Button3),以后无论在窗口的任何
位置,只要有按下左键,都会有上/下滚的动作,我怀疑他还在执行这个线程,因为其他控件
都无法触发事件了
ps:我将break改成exit还是这样
 
我还是把我自己的程序贴出来好:
procedure TForm1.dxfColorButton3MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
msg:tagMSG;
begin
while True do
begin
OutLookGroup1.ScrollBy(0,4); //实现下滚
ScrollPos:=ScrollPos+4; //OutLookGroup是一个控件,跟主题无关
sleep(100);
GetMessage(msg,0,0,0);
if msg.message=WM_LBUTTONUP then
begin
ZeroMemory(@msg,SizeOf(msg));
Break;
end;
end;
end;
 
to san_fish:

应该不会啊,我的程序运行得正常!你那个按钮是什么类的对象啊。
要不你就用一个Tbutton看看,如果还有问题,就发信给我:evol_beautypeng@yeah.net
还有你是不是把其它的控件的 onmousedown 赋予了该按钮的相应事件过程了啊。
 
又发现了一个问题:
当在我也加一句showmessage()后那问题就没有了,会不会是在form重新active后那个循环
才会真正的停止??
 
hehehe
解决那个问题原来还有另一种办法
用一个timer,当buttondown的时候timer.enable:=True,当buttonup的时候:=false,
然后在timer里面执行上/下滚动的程序

真笨,怎么以前没有想到这一招??
 
这样行吗?我以前试过这样的方法。不行的。
因为如果你一直按着这个按钮,那么 ontime事件过程是不会调用的。
 
不会啊
因为onMousseDown所触发的事件仅仅是:
Timer.enabled:=True;
 
接受答案了.
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部