你在onchange里不加代码,就相当于屏蔽了它了

解决方案 »

  1.   

    在哪个事件里面加EXIT;呵呵,也行
      

  2.   

    这样可以阻止OnChange事件发生,但前提条件是TreeView的Parent必须是Form,
    要uses CommCtrl;
    type
      TForm1 = class(TForm)
      private
        procedure WMNOTIFY(var Msg: TMessage); message WM_NOTIFY;
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.DFM}procedure TForm1.WMNOTIFY(var Msg: TMessage);
    var
      nmh: PNMHDR;
    begin
      nmh := Pointer(Msg.LParam);
      if nmh^.code = TVN_SELCHANGED then
        Msg.Result := 1
      else
        Inherited;
    end;如果TreeView是放在别的控件上而非Form上,也可以阻止OnChange事件的发生,
    只是稍稍麻烦的点,先要写一个TWndMethod类型的procedure,然后用
    SetWindowLong来替换掉TreeView的Parent的WndProc。
    在你自已写的procedure中判断WM_NOTIFY是否为TreeView的TVN_SELCHANGED,
    是则截掉。