Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

"Создание модального окна с функцией «Продолжить» в Delphi Firemonkey для Android"

Delphi , Программа и Интерфейс , Модальные формы

Создание модального окна с функцией «Продолжить» в Delphi Firemonkey для Android

При разработке приложений для Android с использованием Delphi и Firemonkey может возникнуть потребность в создании модального окна с функцией «Продолжить», подобной функции MessageDlg(). Однако, данная функция не имpleментирована в Android.

Разработчик столкнулся с необходимостью создания модального окна, которое можно вызывать в коде для установки переменной в коде. Попытки разнести код по разным функциям привели к ухудшению читаемости кода при переключении между функциями. Кроме того, использование MessageDlg() с анонимной функцией также не решает проблему, так как код, находящийся ниже, Execute перед нажатием кнопки.

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

var
  MyInt: Integer;
begin
  MessageDlg('Вы хотите продолжить?', System.UITypes.TMsgDlgType.mtInformation,
    [System.UITypes.TMsgDlgBtn.mbYes, System.UITypes.TMsgDlgBtn.mbNo], 0,
    procedure(const AResult: TModalResult)
    begin
      case AResult of
        mrYes:
          MyInt := 0;
        mrNo:
          MyInt := 1;
      end;
    end);

  if MyInt = 0 then
    //Выполнить что-то (ветка MyInt = 0)
  else
    //Выполнить что-то (ветка MyInt = 1)
end;

Для решения данной проблемы необходимо перенести логику в анонимный метод, который будет Execute после нажатия пользователем кнопки. В этом случае не требуется переменная MyInt.

Ниже представлен пример кода, решающий данную проблему:

begin
  MessageDlg('Вы хотите продолжить?', System.UITypes.TMsgDlgType.mtInformation,
    [System.UITypes.TMsgDlgBtn.mbYes, System.UITypes.TMsgDlgBtn.mbNo], 0,
    procedure(const AResult: TModalResult)
    begin
      case AResult of
        mrYes:
          begin
            //Выполнить что-то (ветка MyInt = 0)
          end;
        mrNo:
          begin
            //Выполнить что-то (ветка MyInt = 1)
          end;
      end;
    end);
end;

В альтернативном ответе предлагается обмануть пользователя, создав панель, которая покроет весь экран полупрозрачным серым фоном (и установив HitTest=True), перед использованием кода, предлагаемого в ответе. Таким образом, пользователь будет думать, что модальное окно является модальным, хотя на самом деле это не так.

В данной статье было рассмотрено создание модального окна с функцией «Продолжить» в Delphi Firemonkey для Android. Было показано, как решить проблему с помощью переноса логики в анонимный метод, а также рассмотрен альтернативный подход для обмана пользователя. Приведенные примеры кода на Object Pascal (Delphi) помогут разработчикам решить подобные проблемы при работе с Firemonkey на Android.

Создано по материалам из источника по ссылке.

Контекст: Требуется создать модальное окно с функцией «Продолжить» в Delphi Firemonkey для Android, где стандартная функция MessageDlg() не работает.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Модальные формы ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-10-23 12:27:44/0.012975931167603/1