Rozwijane menu dla TButton

Próbuję symulować rozwijane menu TButton, jak pokazano poniżej:

procedure DropMenuDown(Control: TControl; PopupMenu: TPopupMenu);
var
  APoint: TPoint;
begin
  APoint := Control.ClientToScreen(Point(0, Control.ClientHeight));
  PopupMenu.Popup(APoint.X, APoint.Y);
end;

procedure TForm1.Button1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if Button = mbLeft then
  begin
    DropMenuDown(Button1, PopupMenu1);
    // ReleaseCapture;
  end;
end;

Problem polega na tym, że gdy menu zostanie upuszczone, po ponownym kliknięciu przycisku chciałbym, aby menu zostało zamknięte, ale zamiast tego ponownie spada.

Szukam rozwiązaniakonkretnie dla ogólnych DelphiTButton nie jest to ekwiwalent strony trzeciej.

questionAnswers(2)

yourAnswerToTheQuestion