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? 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; ? Link to comment Share on other sites More sharing options...
x11 Posted May 25, 2020 Author Share Posted May 25, 2020 Меню не закрывается. ShowMessage не отображается. Пункт с ID = 2 присутствует. 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 Link to comment Share on other sites More sharing options...
x11 Posted May 25, 2020 Author Share Posted May 25, 2020 В том примере OnClick работает. Тогда вопрос, а что может мешать работать событию OnClick у меня в приложении? 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. 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; 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 для всего меню, либо для каждого отдельного пункта. 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 Попробуйте вышеуказанное решение. 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 кодом. Link to comment Share on other sites More sharing options...
Sherzod Posted May 25, 2020 Share Posted May 25, 2020 Да, простите, Вы правы. Link to comment Share on other sites More sharing options...
Recommended Posts
Please sign in to comment
You will be able to leave a comment after signing in
Sign In Now