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

Cancel в InputQuery


Rusland

Вопрос

Если нажимаю Отмена в InputQuery,

    InputQuery('Укажите свой ответ', ['Ответ'], [''],
      procedure(const AResult: TModalResult; const AValues: array of string)
      begin        
        if (AResult=mrOk) and (AValues[0].Trim<>'') then
        begin
          // делаем что-то с AValues[0]          
        end;
      end
    );

то получаю Segmentation Fault в FMX.Dialogs.Android (которого в Seattle не существовало)

procedure TFMXDialogListener.onDialogClosed(modalResult: Integer;
  values: TJavaObjectArray<JString>);
var
  I: Integer;
begin
  FModalResult := modalResult;
  if values <> nil then
  begin
    SetLength(FValues, values.Length);
    for I := 0 to values.Length - 1 do
    begin
        if FModalResult = mrOk then
          FValues[I] := JStringToString(values.Items[I])
        else
          FValues[I] := FDefaultValues[I]; // тут
    end
  end;
  TThread.Queue(FCallerThread, DoDialogClosed);
end;

Где у меня ошибка?

PS. Delphi 10.1 Berlin

PPS. в справке сказано Warning: InputQuery is deprecated. Please use Platform.IFMXDialogServiceAsync.MessageDialogAsync.  InputQuery вышел из моды? )

 

Изменено пользователем Rusland
Ссылка на комментарий

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

  • 1
3 часа назад, Rusland сказал:

 InputQuery вышел из моды? )

и не только...
What's New - Berlin:
Simplified Dialog API
Several procedures and functions to show dialog boxes are now deprecated, and have been replaced by the
procedures and functions of the new IFMXDialogServiceAsync and IFMXDialogServiceSync platform services
that provide support for synchronous and asynchronous dialog boxes, respectively.
The following table summarizes the API changes:

Deprecated Members

New Members 

FMX.Dialogs.ShowMessage*

FMX.Dialogs.ShowMessageFmt*

FMX.Dialogs.ShowMessagePos

ShowMessageAsync

ShowMessageSync

 

FMX.Dialogs.MessageDlg

FMX.Dialogs.MessageDlgPos

FMX.Dialogs.MessageDlgPosHelp

FMX.Platform.IFMXDialogService.MessageDialog 

MessageDialogAsync

MessageDialogSync

 

 

FMX.Dialogs.InputBox

FMX.Dialogs.InputQuery

FMX.Platform.IFMXDialogService.InputQuery 

InputQueryAsync

InputQuerySync

 


* ShowMessage and ShowMessageFmt are not really deprecated, but you may want to use ShowMessageAsync
or ShowMessageSync instead nonetheless.

Two new helper classes have been created as well: TDialogServiceAsync and TDialogServiceSync. These helper
classes provide class methods and functions that allow you to call the new procedures and functions for dialog
boxes without the need of an instance of the corresponding dialog box platform service.
Other FireMonkey

Изменено пользователем enatechno
Ссылка на комментарий
  • 0

Коллеги,
подскажите пожалуйста, как при вызове InputQueryAsync или до этого указать, что я хочу вводить только цифры (чтобы открывалась цифровая клавиатура, а не общая)?

Меня интересует платформа Android, но может есть и общий способ?

 

Ссылка на комментарий
  • 0
  • Модераторы
29 минут назад, Pax Beach сказал:

Коллеги,
подскажите пожалуйста, как при вызове InputQueryAsync или до этого указать, что я хочу вводить только цифры (чтобы открывалась цифровая клавиатура, а не общая)?

Меня интересует платформа Android, но может есть и общий способ?

 

вот

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

Присоединяйтесь к обсуждению

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

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...