x11 Posted May 18, 2020 Posted May 18, 2020 TUniMTreeMenu привязано к TUniMenuItems. В UniMenuItems есть около 10 пунктов. Чтобы сделать дочерние пункты я делаю так: procedure TfmmMain.BuildMainMenu; begin // mmObjects родитель с двумя подчененными пунктами меню mmMyObjects.SetParentComponent(mmObjects); mmFav.SetParentComponent(mmObjects); ... ... ... end; 1. Проблема в том, что родительские пункты меню не отображают маркеров-треугольников. В десктопной версии меню (TUniTreeMenu) такой проблемы нет. 2. Нужно сделать, чтобы при выборе пункта меню оно либо раскрывалось, если есть дочерние пункты, либо, чтобы выполнялась определенная команда, если к пункту меню привязана команда (TAction). procedure TfmmMain.MainMenuClick(Sender: TObject); var TreeNode: TUniTreeNode; begin TreeNode := MainMenu.Selected; if Assigned(TreeNode) and not TreeNode.IsLeaf then begin if TreeNode.HasChildren then begin if TreeNode.Expanded then begin TreeNode.Collapse(False); TreeNode.Expanded := False; end else begin TreeNode.Expand(False); TreeNode.Expanded := True; end; end end;// if Assigned(N) then end; Получается, что при клике на родительский пункт меню появляется ошибка "_cnf_ is not defined". Если убрать из OnClick вышеуказанный код, то ошибок нет, но родительские пункты меню всё равно не раскрываются. Quote
Sherzod Posted May 18, 2020 Posted May 18, 2020 29 minutes ago, x11 said: 1. Проблема в том, что родительские пункты меню не отображают маркеров-треугольников. В десктопной версии меню (TUniTreeMenu) такой проблемы нет. Пожалуйста уточните... Quote
x11 Posted May 18, 2020 Author Posted May 18, 2020 нет маркеров, которые показывают, что это родительский пункт меню и его можно развернуть Quote
x11 Posted May 18, 2020 Author Posted May 18, 2020 а вот десктопное меню TUniTreeMenu и тут маркеры есть Quote
Sherzod Posted May 18, 2020 Posted May 18, 2020 7 minutes ago, x11 said: нет маркеров, которые показывают, что это родительский пункт меню и его можно развернуть Пожалуйста прикрепите тестовый случай или код генерации узлов. Quote
x11 Posted May 18, 2020 Author Posted May 18, 2020 Узлы я создаю в designtime в TUniMenuItems. TUniMTreeMenu привязано к TUniMenuItems. А при создании формы указываю родителей, см выше процедуру BuildMenu Quote
Sherzod Posted May 18, 2020 Posted May 18, 2020 1 minute ago, x11 said: Узлы я создаю в designtime в TUniMenuItems Для теста, Вы пробовали создать все "узлы" в designTime и проверить? Маркеры есть? Quote
Sherzod Posted May 18, 2020 Posted May 18, 2020 52 minutes ago, x11 said: procedure TfmmMain.BuildMainMenu; begin // mmObjects родитель с двумя подчененными пунктами меню mmMyObjects.SetParentComponent(mmObjects); mmFav.SetParentComponent(mmObjects); ... ... ... end; Простите, не очень понимаю этот код. Quote
x11 Posted May 18, 2020 Author Posted May 18, 2020 Вот, всё равно нету маркеров. 1ый снимок - это запущенное приложение. Снимки 1 и 2 - это design-time Quote
Sherzod Posted May 18, 2020 Posted May 18, 2020 13 minutes ago, Sherzod said: Тоже запущенное приложение... Quote
x11 Posted May 18, 2020 Author Posted May 18, 2020 2 minutes ago, Sherzod said: Простите, не очень понимаю этот код. mmObjects - это родительский пункт меню. mmMyObjects и mmFav - это два пункта меню, которые должны быть подчинены пункту mmObjects. Соответственно метод SetParentComponent, как видно из его имени, указывает, что mmObjects должен быть родителем, а mmMyObjects - подчиненным. mmMyObjects.SetParentComponent(mmObjects); По крайней мере, в десктопной версии меню у меня так работает. Quote
x11 Posted May 18, 2020 Author Posted May 18, 2020 1 minute ago, Sherzod said: Тоже запущенное приложение... Ок, и какие мне свойства отключить или включить у меню, чтобы тоже заработало? Какие свойства меню влияют на показ маркеров? Quote
x11 Posted May 18, 2020 Author Posted May 18, 2020 А в примерах есть пример работы с TUniMTreeMenu в связке с TUniMenuItems? Quote
Sherzod Posted May 18, 2020 Posted May 18, 2020 12 minutes ago, x11 said: А в примерах есть пример работы с TUniMTreeMenu в связке с TUniMenuItems? Нет, UnimTreeMenu.rar Quote
x11 Posted May 18, 2020 Author Posted May 18, 2020 Сделал "чистый" пример. Там маркеры есть. Разбираюсь, что в рабочем проекте может не так Quote
x11 Posted May 18, 2020 Author Posted May 18, 2020 В общем, в свойстве LayoutConfig.width я указал 70%, что повлекло за собой обрезку правой части меню. Не знаю, можно ли назвать это поведение баком? Следовательно, у меня вопрос вдогонку. Как правильно открыть боковое меню на 70 или на 80 процентов экрана? Сейчас я делю так: MainMenu.Width := 300; и это неправильно, ведь экран смартфона может быть разной ширины. Quote
x11 Posted May 18, 2020 Author Posted May 18, 2020 Второй вопрос с ошибкой "_cnf_ is not defined" остается открытым. Как сделать так, чтобы меню раскрывалось, если по нему тапнуть пальцем? К сожалению, без дополнительно кода приходится делать тап именно на маркере, что очень неудобно и с первого раза непонятно. Quote
x11 Posted May 18, 2020 Author Posted May 18, 2020 (edited) 3. Как сделать, чтобы один или несколько пунктов меню TUniMTreeMenu и TUniTreeMenu были внизу? Я подозреваю, что можно как-то через custom.css... я вот встречал на форуме тему, но решения там нет. (решено, см ниже) 4. Возможно ли сделать как, чтобы UniMTreeMenu можно было сворачивать и разворачивать (влево-вправо) пальцем? Если да, то как? 5. Свойство hideonclick (у TUniMenuItems ) не работает. 6. Если у TUniMenuItems есть привязанный TAction (TActionList), то событие не срабатывает, приходится писать ручками. Т.е. связка TUniMTreeMenu+TUniMenuItems+TActionList не работает. Edited May 18, 2020 by x11 3 - решено Quote
Sherzod Posted May 18, 2020 Posted May 18, 2020 Возможно, Вам также стоит обратить внимание на UnimMenu? Quote
x11 Posted May 18, 2020 Author Posted May 18, 2020 4 hours ago, x11 said: 3. Как сделать, чтобы один или несколько пунктов меню TUniMTreeMenu и TUniTreeMenu были внизу? Я подозреваю, что можно как-то через custom.css... я вот встречал на форуме тему, но решения там нет. В общем, кое-как с горем пополам, удалось из двух и меню и контейнера сделать одно меню. 1 Quote
x11 Posted May 23, 2020 Author Posted May 23, 2020 On 5/18/2020 at 1:16 PM, x11 said: 2. Нужно сделать, чтобы при выборе пункта меню оно либо раскрывалось, если есть дочерние пункты, либо, чтобы выполнялась определенная команда, если к пункту меню привязана команда (TAction). все еще актуально Quote
Sherzod Posted May 23, 2020 Posted May 23, 2020 5 minutes ago, x11 said: Нужно сделать, чтобы при выборе пункта меню оно либо раскрывалось, если есть дочерние пункты UnimTreeMenu.ExpanderOnly = False ? Quote
x11 Posted May 23, 2020 Author Posted May 23, 2020 О, как всё просто оказалось. Я думал вы в первый раз не помогли, т.к. сложно исправить проблему. Спасибо 1 Quote
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.