Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - MessageDialog auf Android


juelin - Fr 12.07.19 11:22
Titel: MessageDialog auf Android
Hallo Leute,
ich schreibe gerade mein erstes Programm mit Firemonkey.
Nachdem ich mit XE5 so viele Probleme hatte bin ich auf Delphi 10.3 umgestiegen.
Habe Windows 10 und Handy Sony Xperia.

Nun zu meinem Problem:
Früher benutzte ich
JaNein:=messagedlg('Programm-Ende ?', TMsgDlgType.mtConfirmation, [TMsgDlgBtn.mbYes, TmsgDlgBtn.mbNo], 0);

Das ist aber veraltet und nach Recherge benutze ich jetzt (mit FMX.DialogService)

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
  var MR: TModalResult;
    ……
      MR := mrNone;
      TDialogService.MessageDialog('Programm-Ende ?', System.UITypes.TMsgDlgType.mtConfirmation,
        [System.UITypes.TMsgDlgBtn.mbYes, System.UITypes.TMsgDlgBtn.mbNo], System.UITypes.TMsgDlgBtn.mbYes, 0,
        Procedure(Const AResult: System.UITypes.TModalResult)
        Begin
          MR:=AResult;
        End);
      While MR = mrNone Do
      begin
        Application.ProcessMessages;
      end;

Aber auf dem Handy wird die MessageDialogBox nicht angezeigt.
Und deshalb kommt das Programm aus der WHILE-Schleife nicht raus. (ich kann ja keinen Ja/Nein Button drücken).

Kann mir da jemand einen Tipp geben?

Danke und Gruß
Jürgen


jaenicke - Sa 13.07.19 16:31

Warten auf die Antwort des Benutzers ist erstens nicht sinnvoll, funktioniert zweitens nicht und ist drittens unter Android und iOS verboten. Sprich eine App, die das macht, bekommst du ohnehin nicht in den AppStore.

Alles, was bei dir nach der while-Schleife kommt, gehört in die anonyme Methode, in der du aktuell nur MR setzt. Natürlich kannst du dort auch eine entsprechende Methode aufrufen.