procedure TForm1.TreeView1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
  Node: TTreeNode;
  P: TPoint;
begin
  Node := TreeView1.GetNodeAt(x, y);
  if (Node <> nil) and (Button = mbRight) then
  begin
    P := TreeView1.ClientToScreen(Point(x, y));
    TreeView1.Selected := Node;
    PopupMenu1.Popup(p.x, p.y);
  end;
end;