procedure TCheckTreeView.MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); var vTreeNode: TCheckTreeNode; //PT: TPoint; //Rect: TRect; begin inherited; vTreeNode := TCheckTreeNode(GetNodeAt(X, Y)); if (vTreeNode <> nil) then if (Button = mbLeft) then begin if (htOnStateIcon in GetHitTestInfoAt(X, Y)) then vTreeNode.Checked := not vTreeNode.Checked; end else if (Button = mbRight) then begin vTreeNode.Selected := True; if (htOnLabel in GetHitTestInfoAt(X, Y)) or(htOnIcon in GetHitTestInfoAt(X, Y)) then begin Rect := vTreeNode.DisplayRect(True); PT := ClientToScreen(Point(Rect.Left, Rect.Bottom)); PopupMenu.Popup(PT.X, PT.Y); end; end; end;
procedure TForm1.PopupMenu1Popup(Sender: TObject); begin //根据条件设置菜单项的Enabled属性 m2.Enabled := False; end;
Shift: TShiftState; X, Y: Integer);
var
vTreeNode: TCheckTreeNode;
//PT: TPoint;
//Rect: TRect;
begin
inherited;
vTreeNode := TCheckTreeNode(GetNodeAt(X, Y));
if (vTreeNode <> nil) then
if (Button = mbLeft)
then begin
if (htOnStateIcon in GetHitTestInfoAt(X, Y)) then
vTreeNode.Checked := not vTreeNode.Checked;
end
else if (Button = mbRight) then
begin
vTreeNode.Selected := True;
if (htOnLabel in GetHitTestInfoAt(X, Y))
or(htOnIcon in GetHitTestInfoAt(X, Y)) then
begin
Rect := vTreeNode.DisplayRect(True);
PT := ClientToScreen(Point(Rect.Left, Rect.Bottom));
PopupMenu.Popup(PT.X, PT.Y);
end;
end;
end;
begin
//根据条件设置菜单项的Enabled属性
m2.Enabled := False;
end;