Jump to content

Вопросы по UniMTreeMenu


x11

Recommended Posts

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

Link to comment
Share on other sites

29 minutes ago, x11 said:

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

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

Link to comment
Share on other sites

7 minutes ago, x11 said:

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

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

UnimTreeMenu.png.8055822a99327d17942651d1bbe601e2.png

Link to comment
Share on other sites

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

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

Link to comment
Share on other sites

1 minute ago, x11 said:

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

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

Link to comment
Share on other sites

52 minutes ago, x11 said:

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

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

Link to comment
Share on other sites

2 minutes ago, Sherzod said:

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

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

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

 

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

mmMyObjects.SetParentComponent(mmObjects);

 

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

Link to comment
Share on other sites

1 minute ago, Sherzod said:

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

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

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

Link to comment
Share on other sites

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

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

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

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

MainMenu.Width := 300;

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

Link to comment
Share on other sites

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

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

Link to comment
Share on other sites

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

 

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

 

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

 

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

Edited by x11
3 - решено
Link to comment
Share on other sites

4 hours ago, x11 said:

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

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

 

  • Like 1
Link to comment
Share on other sites

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

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

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

Link to comment
Share on other sites

5 minutes ago, x11 said:

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

UnimTreeMenu.ExpanderOnly = False ?

Link to comment
Share on other sites

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

Спасибо :cool:

  • Like 1
Link to comment
Share on other sites

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...