Delphi TreeView解决方法

Delphi TreeView
各位大侠:
  小弟遇到一个麻烦的问题。小弟的程序里用到的TreeView控件,
  现在的问题是这样的,小弟在点击(+)的时候,会运行onlClick();
  现在想屏蔽这个事件,有何好的办法?

------解决方案--------------------
TreeView.onClick := nil;这样等于你所以的点击事件都不能用了,如果是这样那你为什么要写onClick事件,不写不就没事了吗?
------解决方案--------------------
procedure TForm1.TreeView1Click(Sender: TObject);
begin
if YN then exit;
showmessage('单击啦!');
end;

procedure TForm1.TreeView1Expanded(Sender: TObject; Node: TTreeNode);
begin
YN:=true;
end;

procedure TForm1.TreeView1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
YN:=false;
end;



其中YN:boolean;是全局变量。

------解决方案--------------------
procedure TcateForm.tvClick(Sender: TObject);
var P:TPoint;
begin
GetCursorPos(P);
P := tv.ScreenToClient(P);
if (htOnButton in tv.GetHitTestInfoAt(P.X,P.Y)) then exit; //如果是点+号就退出
......
your onclick code
end;
------解决方案--------------------
var
bOnTreeViewOpra :Boolean=False;
  
procedure TForm1.TreeView1Expanding(Sender: TObject;
Node: TTreeNode; var AllowExpansion: Boolean);
begin
bOnTreeViewOpra := True;
end;

procedure TForm1.TreeView1Click(Sender: TObject);
begin
if not bOnTreeViewOpra then
showmessage('sss');
end;

procedure TForm1.TreeView1Collapsing(Sender: TObject;
Node: TTreeNode; var AllowCollapse: Boolean);
begin
bOnTreeViewOpra := True;
end;

procedure TForm1.TreeView1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
bOnTreeViewOpra := False;
end;