FMX Android TDialogService mit mbYesAllNoAllCancel läuft nicht
Liste der Anhänge anzeigen (Anzahl: 2)
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:
Gruß
// 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; Thorsten |
AW: FMX Android TDialogService mit mbYesAllNoAllCancel läuft nicht
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. |
AW: FMX Android TDialogService mit mbYesAllNoAllCancel läuft nicht
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)!!! |
AW: FMX Android TDialogService mit mbYesAllNoAllCancel läuft nicht
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.
Delphi-Quellcode:
Trotzdem ist das eine gute Frage ob diese Mehrfach-Windows-Dialoge prinzipiell auch auf Android und Anderen funktionieren.
AbfrageJaNeinJaAlleNeinAlle := iReturn;
Das habe ich noch nirgendwo gesehen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:14 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