Approximate solution.
1.
type
TXPopupMenu = class(TUniPopupMenu)
end;
2.
procedure TMainForm.UniFormReady(Sender: TObject);
begin
with TXPopupMenu(UniPopupMenu1).MenuControl.JSInterface do
begin
JSAddListener('beforeshow', 'function(me){me._clicked=false}');
JSAddListener('click', 'function(me){me._clicked=true}');
JSAddListener('hide', 'function(me){Ext.defer(function(){if (me._clicked == false) {ajaxRequest('+ UniPanel1.JSName +', "hidemenu", [])}}, 100)}');
end;
end;
3.
procedure TMainForm.UniPanel1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if Button = mbRight then
UniPopupMenu1.Popup (X, Y, Sender);
end;
4.
procedure TMainForm.UniPanel1AjaxEvent(Sender: TComponent; EventName: string;
Params: TUniStrings);
begin
if EventName = 'hidemenu' then
ShowMessage('hidemenu')
end;