x11 Posted May 24, 2020 Share Posted May 24, 2020 Т.к. у TUnimMenu отсутствует свойство(метод) HideOnClick, то я решил воспользоваться событием TUnimMenu.OnClick. procedure TfmmMyObjects.popupMenuClick(Sender: TUnimMenuItem); begin popupMenu.Visible := False; end; Но меню не скрывается. Приходится дописывать строку (popupMenu.Visible := False) у каждого пункта меню. P.S. Если есть метод Show, то почему бы не добавить метод Hide? Quote Link to comment Share on other sites More sharing options...
Sherzod Posted May 25, 2020 Share Posted May 25, 2020 9 hours ago, x11 said: Но меню не скрывается. Приходится дописывать строку (popupMenu.Visible := False) у каждого пункта меню. procedure TMainmForm.UnimMenu1Click(Sender: TUnimMenuItem); begin if Sender.MenuId = 2 then Close else begin ShowMessage(Sender.Caption); Sender.Parent.Visible := False; end; end; ? Quote Link to comment Share on other sites More sharing options...
x11 Posted May 25, 2020 Author Share Posted May 25, 2020 Меню не закрывается. ShowMessage не отображается. Пункт с ID = 2 присутствует. Quote Link to comment Share on other sites More sharing options...
Sherzod Posted May 25, 2020 Share Posted May 25, 2020 Я проверил это на примере: \FMSoft\Framework\uniGUI\Demos\Touch\Menu Quote Link to comment Share on other sites More sharing options...
x11 Posted May 25, 2020 Author Share Posted May 25, 2020 В том примере OnClick работает. Тогда вопрос, а что может мешать работать событию OnClick у меня в приложении? Quote Link to comment Share on other sites More sharing options...
Sherzod Posted May 25, 2020 Share Posted May 25, 2020 2 minutes ago, x11 said: Тогда вопрос, а что может мешать работать событию OnClick у меня в приложении? Возможно Action. Quote Link to comment Share on other sites More sharing options...
Sherzod Posted May 25, 2020 Share Posted May 25, 2020 Также, можете попробовать использовать этот код, для всех Item'ов: procedure TMainmForm.UnimFormReady(Sender: TObject); begin UniSession.AddJS( 'Ext.getBody().addListener("click", function(e, t) {'+ ' if (Ext.getCmp(t.getAttribute("data-componentid")).parent) {'+ ' Ext.getCmp(t.getAttribute("data-componentid")).parent.hide();'+ ' }'+ ' }, null, {'+ ' delegate: ".x-actionsheet-body-el button"'+ ' });' ); end; Quote Link to comment Share on other sites More sharing options...
x11 Posted May 25, 2020 Author Share Posted May 25, 2020 2 hours ago, Sherzod said: Возможно Action. значит нужно либо глобальное свойство HideOnClick для всего меню, либо для каждого отдельного пункта. Quote Link to comment Share on other sites More sharing options...
Sherzod Posted May 25, 2020 Share Posted May 25, 2020 1 minute ago, x11 said: значит нужно либо глобальное свойство HideOnClick Попробуйте вышеуказанное решение. Quote Link to comment Share on other sites More sharing options...
x11 Posted May 25, 2020 Author Share Posted May 25, 2020 Честно, говоря, мне легче добавить в каждый пункт меню по строке popupMenu.Visible := False; И в будущем надеяться, что разработчики добавят HideOnClick, чем нагромождать форму дополнительным JS кодом. Quote Link to comment Share on other sites More sharing options...
Sherzod Posted May 25, 2020 Share Posted May 25, 2020 Да, простите, Вы правы. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.