Jump to content

Не отображается TUnimMenu


x11

Recommended Posts

Проблема возникла в рабочем проекте.

Нажимаешь кнопку и меню отображается (всплывает снизу). В меню выбираешь какой-нибудь пункт, где вызывается код создания и отображения другой мобильной формы, а потом код скрытия меню текущего меню. Пока проблемы нет, но... закрываешь эту форму и возвращаешься на основную форму. Снова нажимаешь кнопку и меню уже не всплывает. Отладчик показывает, что строка UnimMenu1.Show выполняется.

 

Проект, воспроизводящий проблему, приложил. Но здесь проблема воспроизводится сразу, т.е. не нужно открывать и закрывать форму. Меню просто не отображается. После зарпуска приложения нажмите кнопку Войти. Потом последнюю кнопку на панели (см картинку). В появившемся окне нажмите Action1 и вы должны наблюдать проблему.

Обратите внимание, что форма fmMenu является унаследованной от TUnimFormParent. Возможно, что проблема из-за наследования. Может я неправильно создаю дочернюю форму?

procedure TMainmForm.UnimToolButton5Click(Sender: TObject);
begin
  fmMenu := TfmMenu.Create(UniApplication);
  fmMenu.Show;
end;

 

Screenshot_14.jpg

UniGUI_Touch_menu.zip

Link to comment
Share on other sites

2 hours ago, x11 said:

Проблема на картинке. Отображается затемняющая маска и внизу видно кусок меню. И всё, меню не всплывает.

Добрый вечер,

Спасибо за тестовый случай. Мы проверим...

Link to comment
Share on other sites

2 hours ago, x11 said:

Проблема на картинке. Отображается затемняющая маска и внизу видно кусок меню. И всё, меню не всплывает.

Кажется, у меню Items, пустой список!?

Link to comment
Share on other sites

Перепроверил. В тестовом примере проблему пока что не могу воспроизвести.

Буду пытаться искать причину в основном проекте :sad:

Link to comment
Share on other sites

На этой форме листинга объектов есть одно меню.

Ещё есть одно меню на другой форме - на форме редактирования объектов. Эта форма редактирования объектов вызывается из формы листинга объектов. Неужели это как-то связано?

Screenshot_24.jpg

Link to comment
Share on other sites

добавил перед popupMenu.Show строку:

ShowMessage(popupMenu.Items.Count.ToString)

 

всегда, даже во время проблемы вижу 3.

экран не затемняется, просто ничего не происходит.

Link to comment
Share on other sites

Just now, x11 said:

всегда, даже во время проблемы вижу 3.

экран не затемняется, просто ничего не происходит.

А если попробовать оставить только одно меню?

Link to comment
Share on other sites

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

 

и что дальше?

если хотите, могу дать удаленный доступ к ПК

Link to comment
Share on other sites

Добавлю.

Форма листинга и форма редактирования являются унаследованными, но от разных форм. Не взаимосвязанны.

Link to comment
Share on other sites

Мне кажется, я воспроизвел проблему.

1. Нужно привязать все меню и ActionList`ы на всех формах к TUniImageListAdapter и к TUniNativeImageList.

2. Нужно создавать форму не с помощью функции, с помощью конструктора create

  fmSelect2 := TfmSelect2.Create(UniApplication);
  fmSelect2.ShowModalN;

 

я склоняюсь ко второму варианту

fmmSelect1 создается с помощью функции, а вот fmSelect2 с помощью конструктора и в этом разница

function fmmSelect1: TfmmSelect1;
begin
  Result := TfmmSelect1(UniMainModule.GetFormInstance(TfmmSelect1));
end;

проект приложил: чтобы воспроизвести проблему, нажмите Войти, а на главной форме нажмите самую последнюю кнопку без иконки и откроется проблемная форма с двумя кнопками: Action1 и Action2. Нажмите любую кнопку (либо Action1, либо Action2), откроется нижнее меню, в нижнем меню есть три пункта, именно второй (средний) пункт воспроизводит проблему :

procedure TfmMenu.Action2Execute(Sender: TObject);
begin
  inherited;
  UnimMenu1.Visible := False;
  fmSelect2 := TfmSelect2.Create(UniApplication);
  fmSelect2.ShowModalN;
end;

откроется fmSelect2 и потом на форме fmSelect2 внизу нажмите любой пункт меню и fmSelect2 закроется, вы снова увидите форму с двумя кнопками, а теперь ещё раз нажмите Action1 или Action2 и меню уже не появится.

 

я думаю, что вот эта проблема тоже связана с текущей - т.е. нужно знать как правильно выполнять наследование и создавать унаследованные формы

 

UniGUI_Touch_Menu2.zip

 

Link to comment
Share on other sites

В рабочем проекте я переделал создание формы на использование функции

function fmmSearchResults: TfmmSearchResults;
begin
  Result := TfmmSearchResults(UniMainModule.GetFormInstance(TfmmSearchResults));
end;

 

но проблема всё равно не ушла :(

т.е. пока что точно не могу выявить и воспроизвести проблему

Link to comment
Share on other sites

  • 2 weeks later...
  • 4 weeks later...

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
×
×
  • Create New...