Kitty Опубликовано 16 октября, 2014 Опубликовано 16 октября, 2014 Вот, к примеру, код: catch(Exception &E) { ShowMessage(L"Произошла ошибка в ButtonDeleteClick. Класс ошибки: " + E.ClassName() + L"\nСообщение ошибки: " + E.Message + L" Программа будет закрыта."); Application->Terminate(); } В готовом APK созданном в RADXE6 я вижу окно с сообщением. Нажимаю в нем ОК и программа закрывается. Все нормально. В RADXE7 я вижу на мгновение окно с сообщением, и программа сразу закрывается сама. Даже не успеваешь прочитать, что было написано в окне сообщения. Как сделать, чтобы в готовом APK созданном в RADXE7 пользователь мог увидеть окно с сообщением ShowMessage и нажать в нем кнопку? В RADXE6 проблем нет. Спасибо.
0 Администраторы Brovin Yaroslav Опубликовано 16 октября, 2014 Администраторы Опубликовано 16 октября, 2014 (изменено) В XE7 диалоговые окна стали не блокирующими. То есть, событие закрытия диалога приходит асинхронно через указанный CallBack. В ShowMessage нету параметра CallBack. Поэтому вместо него нужно использовать: MessageDlg('Text', TMsgDlgType.mtCustom, [TMsgDlgBtn.mbOK], -1, procedure (const AResult: TModalResult) begin Application.Terminate; end); Ссылка на эту тему: [Android] Использование ACloseDialogProc в MessageDlg Пример использования MEssageDlg в C++ Builder Изменено 19 октября, 2014 пользователем Brovin Yaroslav Добавлена ссылка на пример, благодаря пользователю Kitty Kitty 1
0 Kitty Опубликовано 16 октября, 2014 Автор Опубликовано 16 октября, 2014 Большое спасибо. Попробую реализовать на С++. В XE7 диалоговые окна стали не блокирующими. Скажите пожалуйста, а зачем все было менять если все прекрасно работало в RAD XE6 так как надо и интуитивно понятно? Спасибо.
0 Администраторы Brovin Yaroslav Опубликовано 16 октября, 2014 Администраторы Опубликовано 16 октября, 2014 Потому что Google Android не дает возможность сделать блокируемый диалог без блокирования основного потока приложения. Поэтому в XE6 при вызове ShowMessage мог блокироваться основной тред приложения, в результате чего приложения находится в состоянии "Не отвечает" (не отрисовывается и тд.) И Android мог решить, что возникла какая-то проблема. Поэтому сделан не блокирующие диалоги с асинхронным уведомление о закрытии диалога. Kitty 1
0 Kitty Опубликовано 19 октября, 2014 Автор Опубликовано 19 октября, 2014 Для С++ найдено: http://sourceforge.net/p/radstudiodemos/code/HEAD/tree/branches/RadStudio_XE7/CPP/Mobile%20Snippets/MessageAlerts/uMain.cpp#l60
Вопрос
Kitty
Вот, к примеру, код:
В готовом APK созданном в RADXE6 я вижу окно с сообщением. Нажимаю в нем ОК и программа закрывается. Все нормально.
В RADXE7 я вижу на мгновение окно с сообщением, и программа сразу закрывается сама. Даже не успеваешь прочитать, что было написано в окне сообщения.
Как сделать, чтобы в готовом APK созданном в RADXE7 пользователь мог увидеть окно с сообщением ShowMessage и нажать в нем кнопку?
В RADXE6 проблем нет.
Спасибо.
4 ответа на этот вопрос
Рекомендуемые сообщения