При использовании приложения для Android, разработанного с использованием студии java или android, я обнаружил, что в диалоговом окне диалога сообщения осталось выполнение следующей строки до тех пор, пока не будет дан ответ на диалоговое приглашение. Я пытаюсь сделать это с помощью TDialogService.MessageDialog (AMessage, ADialogType, AButtons, ADefaultButton, 0, procedurexyz). Пока отображается приглашение, выполняется следующая строка, которая делает запрос бесполезным, поскольку пользователь должен был принять решение о следующем действии. Мне нужна помощь от любого, чтобы получить приглашение диалогового окна активного блочного сообщения.Delphi fmx заблокированное сообщение Диалоговое окно
0
A
ответ
1
После вашего предложения @Kami я придумал это, и он очень хорошо работает для меня, хотя я открыт для предложений или дополнений.
function MsgBox(const AMessage: string; const ADialogType: TMsgDlgType; const AButtons: TMsgDlgButtons;
const ADefaultButton: TMsgDlgBtn): Integer;
var
myAns: Integer;
IsDisplayed: Boolean;
begin
myAns := -1;
IsDisplayed := False;
While myAns = -1 do
Begin
if IsDisplayed = False then
TDialogService.MessageDialog(AMessage, ADialogType, AButtons, ADefaultButton, 0,
procedure (const AResult: TModalResult)
begin
myAns := AResult;
IsDisplayed := True;
end);
IsDisplayed := True;
Application.ProcessMessages;
End;
Result := myAns;
end;
1
Embarcadero documentation says, что на Android платформе вы можете использовать только не блокирующие вызовы для ShowMessage
, MessageDialog
, myForm.ShowModal
и т.д.
Чтобы получить «блокировки» режим вы можете использовать обходной путь, как это:
function myMessageDialog(const AMessage: string; const ADialogType: TMsgDlgType;
const AButtons: TMsgDlgButtons; const ADefaultButton: TMsgDlgBtn): Integer;
var
mr: TModalResult;
begin
mr:=mrNone;
// standart call with callback anonimous method
TDialogService.MessageDialog(AMessage, ADialogType, AButtons,
ADefaultButton, 0,
procedure (const AResult: TModalResult)
begin
mr:=AResult
end);
while mr = mrNone do // wait for modal result
Application.ProcessMessages;
Result:=mr;
end;
+0
Пробовал, но не работал – niglng
Смежные вопросы
- 1. Сообщение Delphi CMExit не отправлено, когда модальное диалоговое окно закрыто?
- 2. Delphi fmx resize form
- 3. Delphi Visual FMX Component
- 4. delphi fmx Функция DrawBitmap
- 5. Delphi - FMX Form BUG?
- 6. Открывается окно ShowModal NSOpenPanel будет автоматически закрыто в Delphi FMX
- 7. Delphi FMX приложение для Android. Как открыть окно SMS
- 8. Откройте диалоговое окно Modal Асинхронно в Delphi
- 9. Диалоговое окно «Диалоговое окно« Диалоговое окно «Диалоговое окно« Диалоговое окно »не обновлено
- 10. Delphi fmx move borderless form
- 11. Delphi FMX TCalendar - отключить выходные
- 12. Delphi fmx tabcontrol событие перед новой вкладкой
- 13. Spotifre Сообщение диалоговое окно Действие окна
- 14. Вставить facebook отправить сообщение диалоговое окно?
- 15. Delphi FMX TAnimator. Как оживить TPointF
- 16. Delphi: SendMessage не отправлять в FMX
- 17. Диалоговое окно «Диалоговое окно» по умолчанию «Нет»?
- 18. Диалоговое окно «Диалоговое окно« Свойства папки »
- 19. Диалоговое окно Android Диалоговое окно при запуске
- 20. Диалоговое окно Primefaces: диалоговое окно не открывается
- 21. имитирующий логин сайта в delphi app FMX
- 22. Delphi VCL ShadowEffect как FMX TShadowEffect
- 23. Форма FMX в DLL (firemonkey/delphi)
- 24. Delphi (FMX) LiveBindings с несколько Radiobuttons
- 25. Delphi FMX MapView - удалить все маркеры
- 26. Delphi fmx как нажимать изображение и форму?
- 27. Delphi код порта из VCL в FMX
- 28. Delphi FMX - контрольный порядок управления элементами управления
- 29. convert fmx project to vcl Delphi XE10
- 30. Работа с webform delphi xe7 fmx
блокирующие диалоги не поддерживается в Android. Используйте функции обратного вызова. – kami
Какая версия Delphi? Изменения FMX между версиями, и тот, который вы используете, имеет значение. . –
@kami вы имеете в виду обратного вызова, такие как TDialogService.MessageDialog (AMessage, ADialogType, AButtons, ADefaultButton, 0, // Использовать анонимный метод, чтобы убедиться, что подтверждение появляется, как ожидалось процедуры (Const AResult: TModalResult) начинают случай AResult из {Detect кнопка была нажата и показать другое сообщение} mrYES: ShowMessage ('Вы выбрали Yes'); mrNo: ShowMessage ('Вы выбрали No'); конец; конец); , потому что я продолжаю задаваться вопросом, как это делается или достигнуто в java – niglng