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

"Проблемы с ShowModal в Android: почему моя форма входа не отображается?"

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

Заголовок: Проблемы с ShowModal в Android: почему моя форма входа не отображается?

Вопрос: Я пытаюсь создать форму входа для моего основного приложения Android, и делаю это следующим образом:

var
  CanGo: Boolean;
begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  loginfrm := Tloginfrm.Create(nil);
  try
    loginfrm.ShowModal;
    CanGo := loginfrm.LoginSuccess = true;
  finally
    FreeAndNil(loginfrm);
  end;
  if CanGo then
    Application.Run;
end;

Этот код отлично работает в моем приложении Win32, но когда я пытаюсь сделать то же самое в приложении Android, приложение останавливается при прикосновении к экрану и не показывает форму входа. Разве ShowModal работает иначе в Android? Что я делаю не так?

Ответ: Существует много похожих вопросов на этом сайте. Прочитайте документацию:

FMX.Forms.TCommonCustomForm.ShowModal

Внимание: Модальные диалоговые окна не поддерживаются в приложениях Android. Вместо вызова ShowModal вы должны вызвать Show, и форма должна вернуться и вызвать ваше событие. Рекомендуется не использовать модальные диалоговые окна ни на одной из мобильных платформ (iOS и Android), так как это может привести к непредсказуемому поведению. Отказ от использования модальных диалоговых окон исключает потенциальные проблемы при отладке и поддержке ваших мобильных приложений.

С тех пор, как были введены мобильные платформы, Embarcadero предложила разные способы вызова ShowModal. Все они имели недостатки, и теперь документация говорит вам не использовать их вообще.

Комментарии: Должен ли я создавать свою форму входа так, чтобы она была первой автоматически созданной формой? Этот пост, похоже, отвечает на этот вопрос: Показать форму входа перед основной формой.

Пример кода на Object Pascal (Delphi) для создания формы входа и отображения ее перед основной формой:

unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, FMX.Classes, FMX.Controls, FMX.Forms, FMX.Graphics,
  FMX.Types, FMX.Menus, FMX.StdCtrls;

type
  TForm1 = class(TForm)
    btnLogin: TButton;
    edtUsername: TEdit;
    edtPassword: TEdit;
    procedure btnLoginClick(Sender: TObject);
  private
    { Private declarations }
    FLoginSuccess: Boolean;
  public
    { Public declarations }
    property LoginSuccess: Boolean read FLoginSuccess write FLoginSuccess;
  end;

var
  Form1: TForm1;

implementation

{$R *.fmx}

procedure TForm1.btnLoginClick(Sender: TObject);
begin
  if (edtUsername.Text = 'username') and (edtPassword.Text = 'password') then
  begin
    FLoginSuccess := True;
    Hide;
    MainForm.Show;
  end
  else
    ShowMessage('Неверное имя пользователя или пароль');
end;

end.

В данном примере форма входа отображается при запуске приложения, и при нажатии кнопки входа проверяется правильность имени пользователя и пароля. Если они верны, то форма входа скрывается, и отображается основная форма (MainForm). Если имя пользователя или пароль неверны, то показывается сообщение об ошибке.

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

Контекст: Разработчик столкнулся с проблемой отображения формы входа в приложении Android, используя метод ShowModal в Delphi.


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

Получайте свежие новости и обновления по 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:25:07/0.0055360794067383/1