OnMouseUp事件(50分)

  • 主题发起人 主题发起人 3h
  • 开始时间 开始时间
3

3h

Unregistered / Unconfirmed
GUEST, unregistred user!
在TListView & TTreeView中OnMouseUp事件不能很好启动,但OnMouseDown反应很灵敏。
不知何因?已排除其它代码的影响的原因,因为我用空的。
其它组件也有此问题,需要大力地不断地按鼠标键才能引发此事件,麻烦,应该是BUG。
应用环境:Delphi 5
 
还是你的鼠标用旧了反映不灵敏吧。
 
还是你的鼠标用旧了,反映不灵敏。
还有就是你按了鼠标后,如果,鼠标移动了,然后再放开鼠标,这个
OnMouseUp可能就不是你所要的OnMouseUp了!
 
我也遇到过类似的问题,应该是bug,只好不用它了。去下载个补丁也许管用。
 
阿蒙:我的鼠标是旧的?你怎么知道的,确是旧的,不过在资源管理器中没事耶。 :)
thtfsyh:这个我当然知道。
kucio:这个问题在D3、4就可能应该有了,你知道补丁在里面可以荡吗?
 
http://www.inprise.com/delphi/
 
我用D5试了,没问题。你换个mouse试试
 
我用d4试了,能触发,但是不是释放mouse键时,而是按下mouse时,类似于mousedown,但比mousedown晚。怎么回事?mouse坏了?
 
我好象没发现这个问题。
 
我太生气了,竟然老说我的鼠标坏!
在此重申,我的鼠标质量非常优秀,不会坏!

menxin,
你在测试时是轻轻地按还是重重地按了很多次?不是点了很多次吧?:)
OnMouseUp这个事件按理说应该是轻轻一按就可以触发的吧?如果写了OnClick事件可能会有影响,
不过我的代码中没有,双击也没有。真的是不能启动,不是不能,是很难。:)
BTW, OnMouseDown事件触发非常好,不过必须等到释放按键也就是UP后才能触发DOWN,
应该有关系?
 
我不再嘲笑你的鼠标了。:-)

你自己试试。

var
i:integer=0;
j:integer=0;

......

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
inc(i);
caption:=format('%d,%d',[i,j]);
end;

procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
inc(j);
caption:=format('%d,%d',[i,j]);
end;

我的结果根你完全不同。mousedown不会等mouseup后再触发。
 
试过了没问题.
 
我是指TTreeView & TListView.
 
嘿嘿, 试了一下.
没有问题嘛.
form上一个Treeview, 一个label, 在Treeview的OnMouseUp中写了如下代码:
procedure TForm1.TreeView1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
label1.caption := format('%d, %d',[x, y]);
end;

运行结果一切正常.
我也用D5.
如果有问题, 那就不是delphi的问题了, 可以肯定是mouse硬伤,
或者是95/98的comctl32.dll的问题了.(我用nt)
 
我的测试结果(在nt4 sp5):

TreeView没问题。

ListView有问题:
ListView里面加入几个小条目进去
点击小条目的地方,是等到放开的时候才发一个 MouseDown 和MouseUp
点击ListView的空白的地方(没有小条目的地方)比较奇怪,
按下(没有松开)时发一个 Down 立即又发一个 Up ,等到松开键时又发多一次 Up

 
啊,我没说明白,对不起。
我是说右键,左键很灵光但右键不行,不信你试。
 
真的,望诸位再看看?
 
此谜无人能解么?
 
TreeView有问题需要双击右键才行,ListView没有问题。

procedure TForm1.TreeView1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if Button=(mbRight) then ShowMessage('Mouse Up');
end;

procedure TForm1.ListView1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if Button=(mbRight) then ShowMessage('Mouse Up');
end;
 
后退
顶部