Перейти к содержанию
Fire Monkey от А до Я
  • 0

[Android] [XE7] Пропадает окно ShowMessage


Kitty

Вопрос

Вот, к примеру, код:

catch(Exception &E)

                     {

                      ShowMessage(L"Произошла ошибка в ButtonDeleteClick. Класс ошибки: " + E.ClassName() +

                      L"\nСообщение ошибки: " + E.Message + L" Программа будет закрыта.");

                      Application->Terminate();

                     }

В готовом APK созданном в RADXE6 я вижу окно с сообщением. Нажимаю в нем ОК и программа закрывается. Все нормально.

 

В RADXE7 я вижу на мгновение окно с сообщением, и программа сразу закрывается сама. Даже не успеваешь прочитать, что было написано в окне сообщения.

Как сделать, чтобы в готовом APK созданном в RADXE7 пользователь мог увидеть окно с сообщением ShowMessage и нажать в нем кнопку?

В RADXE6 проблем нет.

Спасибо.

Ссылка на комментарий

Рекомендуемые сообщения

  • 0
  • Администраторы

В XE7 диалоговые окна стали не блокирующими. То есть, событие закрытия диалога приходит асинхронно через указанный CallBack. 
В ShowMessage нету параметра CallBack. Поэтому вместо него нужно использовать:

MessageDlg('Text', TMsgDlgType.mtCustom, [TMsgDlgBtn.mbOK], -1, 
  procedure (const AResult: TModalResult) begin
    Application.Terminate;
  end);

Ссылка на эту тему: 

Изменено пользователем Brovin Yaroslav
Добавлена ссылка на пример, благодаря пользователю Kitty
Ссылка на комментарий
  • 0

Большое спасибо. Попробую реализовать на С++.

 

В XE7 диалоговые окна стали не блокирующими.

 

 

Скажите пожалуйста, а зачем все было менять если все прекрасно работало в RAD XE6 так как надо и интуитивно понятно?

Спасибо.

Ссылка на комментарий
  • 0
  • Администраторы

Потому что Google Android не дает возможность сделать блокируемый диалог без блокирования основного потока приложения. Поэтому в XE6 при вызове ShowMessage мог блокироваться основной тред приложения, в результате чего приложения находится в состоянии "Не отвечает" (не отрисовывается и тд.) И Android мог решить, что возникла какая-то проблема.

 

Поэтому сделан не блокирующие диалоги с асинхронным уведомление о закрытии диалога.

Ссылка на комментарий
Гость
Эта тема закрыта для публикации ответов.
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...