Jump to content

Recommended Posts

Posted

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 вышеуказанный код, то ошибок нет, но родительские пункты меню всё равно не раскрываются.

 

 

Screenshot_2.jpg

Posted
29 minutes ago, x11 said:

1. Проблема в том, что родительские пункты меню не отображают маркеров-треугольников. В десктопной версии меню (TUniTreeMenu) такой проблемы нет.

Пожалуйста уточните...

Posted

нет маркеров, которые показывают, что это родительский пункт меню и его можно развернуть

Screenshot_6.jpg

Posted
7 minutes ago, x11 said:

нет маркеров, которые показывают, что это родительский пункт меню и его можно развернуть

Пожалуйста прикрепите тестовый случай или код генерации узлов.

UnimTreeMenu.png.8055822a99327d17942651d1bbe601e2.png

Posted

Узлы я создаю в designtime в  TUniMenuItems. TUniMTreeMenu привязано к TUniMenuItems. 

А при создании формы указываю родителей, см выше процедуру BuildMenu

Posted
1 minute ago, x11 said:

Узлы я создаю в designtime в  TUniMenuItems

Для теста, Вы пробовали создать все "узлы" в designTime и проверить? Маркеры есть?

Posted
52 minutes ago, x11 said:

procedure TfmmMain.BuildMainMenu; begin // mmObjects родитель с двумя подчененными пунктами меню mmMyObjects.SetParentComponent(mmObjects); mmFav.SetParentComponent(mmObjects); ... ... ... end;

Простите, не очень понимаю этот код.

Posted

Вот, всё равно нету маркеров.

1ый снимок - это запущенное приложение.

Снимки 1 и 2 - это design-time

Screenshot_8.jpg

Screenshot_9.jpg

Screenshot_10.jpg

Posted
2 minutes ago, Sherzod said:

Простите, не очень понимаю этот код.

mmObjects - это родительский пункт меню.

mmMyObjects и mmFav - это два пункта меню, которые должны быть подчинены пункту mmObjects.

 

Соответственно метод SetParentComponent, как видно из его имени, указывает, что mmObjects должен быть родителем, а mmMyObjects - подчиненным.

mmMyObjects.SetParentComponent(mmObjects);

 

По крайней мере, в десктопной версии меню у меня так работает.

Posted
1 minute ago, Sherzod said:

Тоже запущенное приложение...

Ок, и какие мне свойства отключить или включить у меню, чтобы тоже заработало?

Какие свойства меню влияют на показ маркеров?

Posted

А в примерах есть пример работы с TUniMTreeMenu в связке с TUniMenuItems?

Posted

Сделал "чистый" пример. Там маркеры есть.

Разбираюсь, что в рабочем проекте может не так :(

Posted

В общем, в свойстве LayoutConfig.width я указал 70%, что повлекло за собой обрезку правой части меню.

Не знаю, можно ли назвать это поведение баком?

Следовательно, у меня вопрос вдогонку. Как правильно открыть боковое меню на 70 или на 80 процентов экрана?

Сейчас я делю так:

MainMenu.Width := 300;

и это неправильно, ведь экран смартфона может быть разной ширины.

Posted

Второй вопрос с ошибкой "_cnf_ is not defined" остается открытым. Как сделать так, чтобы меню раскрывалось, если по нему тапнуть пальцем?

К сожалению, без дополнительно кода приходится делать тап именно на маркере, что очень неудобно и с первого раза непонятно.

Posted (edited)

3. Как сделать, чтобы один или несколько пунктов меню TUniMTreeMenu и TUniTreeMenu были внизу? Я подозреваю, что можно как-то через custom.css... я вот встречал на форуме тему, но решения там нет. (решено, см ниже)

 

4. Возможно ли сделать как, чтобы UniMTreeMenu можно было сворачивать и разворачивать (влево-вправо) пальцем? Если да, то как?

 

5. Свойство hideonclick (у TUniMenuItems ) не работает.

 

6. Если у TUniMenuItems есть привязанный TAction (TActionList), то событие не срабатывает, приходится писать ручками. Т.е. связка TUniMTreeMenu+TUniMenuItems+TActionList не работает.

Edited by x11
3 - решено
Posted
4 hours ago, x11 said:

3. Как сделать, чтобы один или несколько пунктов меню TUniMTreeMenu и TUniTreeMenu были внизу? Я подозреваю, что можно как-то через custom.css... я вот встречал на форуме тему, но решения там нет.

В общем, кое-как с горем пополам, удалось из двух и меню и контейнера сделать одно меню.

 

  • Like 1
Posted
On 5/18/2020 at 1:16 PM, x11 said:

2. Нужно сделать, чтобы при выборе пункта меню оно либо раскрывалось, если есть дочерние пункты, либо, чтобы выполнялась определенная команда, если к пункту меню привязана команда (TAction).

все еще актуально

Posted
5 minutes ago, x11 said:

Нужно сделать, чтобы при выборе пункта меню оно либо раскрывалось, если есть дочерние пункты

UnimTreeMenu.ExpanderOnly = False ?

Posted

О, как всё просто оказалось. Я думал вы в первый раз не помогли, т.к. сложно исправить проблему.

Спасибо :cool:

  • Like 1

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...