AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung FMX Android TDialogService mit mbYesAllNoAllCancel läuft nicht

FMX Android TDialogService mit mbYesAllNoAllCancel läuft nicht

Ein Thema von tdeck · begonnen am 27. Okt 2022 · letzter Beitrag vom 29. Okt 2022
Antwort Antwort
tdeck

Registriert seit: 26. Jun 2006
Ort: Obertshausen
69 Beiträge
 
Delphi 11 Alexandria
 
#1

FMX Android TDialogService mit mbYesAllNoAllCancel läuft nicht

  Alt 27. Okt 2022, 20:19
Hallo Leute,

ich baue mir gerade eine Dialog-Abfrage als Function, die unter Windows und Android laufen soll.

Unter Windows funktioniert alles so wie es soll, aber unter Android leider nicht.
Unter Android habe ich nur 3 Auswahlmöglichkeiten "Abbrechen", "NEIN" und "JA".
Ebenfalls erhalte ich immer nur -1 als Rückgabe.

Gibt es so einen Dialog unter Android nicht oder habe ich es falsch aufgebaut?

Und warum stimmt unter Android der Rückgabewert nicht?

Code:
// Android komforme Abfrage
//
function AbfrageJaNeinJaAlleNeinAlle( strText : string ) : integer;
var
  iReturn : integer;
begin
   iReturn := -1;
  TDialogService.MessageDialog(strText,
                TMsgDlgType.mtWarning,
                FMX.Dialogs.mbYesAllNoAllCancel,
                TMsgDlgBtn.mbNo,
                0,
      procedure (const AResult: System.UITypes.TModalResult)
      begin
       case AResult of
          mrYES          : iReturn := 1;
          mrYesToAll     : iReturn := 11;
          mrNo           : iReturn := 2;
          mrNoToAll      : iReturn := 22;
       else
         iReturn := -1;
       end;
      end);

   AbfrageJaNeinJaAlleNeinAlle := iReturn;
end;
Gruß
Thorsten
Miniaturansicht angehängter Grafiken
27-10-2022_21-10-36.png   27-10-2022_21-11-26.png  
Thorsten
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
3.945 Beiträge
 
Delphi 12 Athens
 
#2

AW: FMX Android TDialogService mit mbYesAllNoAllCancel läuft nicht

  Alt 28. Okt 2022, 08:18
Ich vermute mal solche mehrfachen Auswahlen gibt es unter Android nicht 1:1.

Es gab unter IOS mal einen Bug mit Verwechselung von mrOK und mrCancel
https://en.delphipraxis.net/topic/72...#comment-61713
https://quality.embarcadero.com/browse/RSP-37702
In D11.2 Patch 1 ist das wohl gefixt.

Eine solche Verwechselung ist mir bei Android jetzt nicht bekannt, vielleicht ist da aber jetzt was neuerdings reingerutscht.
Es könnte sich lohnen das mal direkt in den Sourcen zu checken.
  Mit Zitat antworten Zitat
mensch72

Registriert seit: 6. Feb 2008
838 Beiträge
 
#3

AW: FMX Android TDialogService mit mbYesAllNoAllCancel läuft nicht

  Alt 28. Okt 2022, 09:43
Euch ist schon klar, das hier "Async" erst ein gültiges Result gibt, wenn im Dialog eine UserAction passiert.

Der Code so wie er ist liefert IMMER -1, weil "TDialogService.MessageDialog(...") NICHT wartet und sofort zurück kommt und da hat sich am -1 nix geändert.
Die lokale "Rückgabe-Variable" ist auch suboptimal, weil sich die gesamte function ja auch stets sofort beendet... besser was in übergeordneter Klasse oder notfalls was globales.


Grundvoraussetzung: Verstehen, WARUM und DAS es in Android&IOS anders wie unter Windows ist(ohne warten)!!!
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
3.945 Beiträge
 
Delphi 12 Athens
 
#4

AW: FMX Android TDialogService mit mbYesAllNoAllCancel läuft nicht

  Alt 29. Okt 2022, 08:44
Das stimmt, habe ich übersehen dass der TE wohl annimmt direkt einen gültigen Wert zu bekommen.
Die Dialoge "warteten" nicht auf die Eingabe, deshalb kommt hier immer -1.
AbfrageJaNeinJaAlleNeinAlle := iReturn; Trotzdem ist das eine gute Frage ob diese Mehrfach-Windows-Dialoge prinzipiell auch auf Android und Anderen funktionieren.
Das habe ich noch nirgendwo gesehen.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:27 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz