发现使用右键时候树型控件无法抓到MouseDown事件,是在MouseUp的時候才运行MouseDown里面的代码使用的是D7,标准树型控件.

解决方案 »

  1.   

    Button: TMouseButton,这个参数不就可以判断是左键还是右键吗
      

  2.   

       仔细看了看,LZ说的确是是个问题,同问高手 这是不是个BUG,DOWN的事件在UP时才触发
      

  3.   

    等待大家的解释
    据我观察,好像右键后,再有些其它的事件就会触发事件处理函数,不一定要mouseup,比如移动一下也会触发
      

  4.   

    刚才测试了一下,确实如此,MouseMove也会触发.
    不过我原来是想PopupMenu出來的時候,抓节点来设置菜单项的内容的,现在因这个原因,无法获得正确的节点,菜单弹出的时候MouseUp和MouseMove事件也不会触发了
      

  5.   

    procedure TCustomTreeView.MouseDown(Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
      if Button = mbLeft then
        if FSelectChanged then
          FSelectChanged := False
        else if htOnItem in GetHitTestInfoAt(X, Y) then
          FinishSelection(Selected, Shift)
        else
          ValidateSelection;
      inherited;
    end;刚才看了ComCtrls.pas,似乎这里就有问题,难道需要自己修改这个文件吗?
    我刚学Delphi还不太了解,希望各位多指教