有关Timer控件一个很奇怪的问题
在一个窗体上放两个Panel(Panel1,Panel2)和一个Timer控件,
在Timer控件事件里写
Panel1.left := Panel1.left -1;
把Timer的频率设置为100ms
然后在Panel2的MouseMove事件里写上
if Shfit = [ssLeft] then
showmessage('Test!');
运行程序,这时在Panel2控件上不移动鼠标,只单击一下,居然触发了MouseMove事件。
也就是说当Timer控制一个控件移动时,点击(但不移动鼠标)其他任何一个控件都能触发被点击控件的MouseMove事件,即使是在其他窗体上的控件也是如此。请问是何原因?
[解决办法]
单击触发mousemove太正常了,你以为你的手能精确到不触发mousemove吗
[解决办法]
屏蔽掉单击事件行不行?
[解决办法]
嗯,换个事件试试吧
[解决办法]
100ms的定时器,精度误差可能远超10%了
加MouseMove事件是干什么呢?它是一个连续的事件,跳出对话框,就无法连续了
[解决办法]
很正常吧,现在的鼠标,有是有你把他放在那里不动,他都自己一晃一晃的
[解决办法]
就算是集束激光打在相同点上都会有波动的
[解决办法]
嗯,同意
[解决办法]
楼主的APM很高噢
[解决办法]
不知你这两个 Panel 摆在什么位置,是否设置靠左、靠右、靠上、靠下属性。
可能是 panel1的位置变化,影响了panel2的位置变化,而鼠标是相对屏幕的位置,控件位置变化了,鼠标相对控件的位置也变化了。
如果,这两个控件是相对独立的,应该不会有这种情况。
[解决办法]