Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   [FMX IOS] MessageDLG mit iOS 11.2.2 (https://www.delphipraxis.net/194818-%5Bfmx-ios%5D-messagedlg-mit-ios-11-2-2-a.html)

Devil1925 10. Jan 2018 15:42

[FMX IOS] MessageDLG mit iOS 11.2.2
 
Moin, ich habe folgende Problemstellung:
Ich nutze in meiner App folgenden Code:
Delphi-Quellcode:
  if MessageDlg('Datenimport starten?', TMsgDlgType.mtConfirmation, [TMsgDlgBtn.mbYes, TMsgDlgBtn.mbNo], 0) = mrYes then
  DoStuff;
Mein Problem:
Bis zur iOS Version 11.2.1 hat alles Wunderbar funktioniert. Mit der neuen iOS Version 11.2.2 friert die App ein, sobald ich versuche den Dialog zu öffnen. es erscheint nur das Fenster mit den beiden Buttons und danach kann ich nichts mehr machen.
Hat jemand eine Idee, wie ich diese Problematik Lösen kann? habt ihr das selbe Problem?

Darlo 10. Jan 2018 16:58

AW: [FMX IOS] MessageDLG mit iOS 11.2.2
 
Probiers mal so:

Delphi-Quellcode:
  MessageDLG('Blubb',
    TMsgDlgType.mtInformation, [TMsgDlgBtn.mbYes] ,0,
            procedure(const AResult: System.UITypes.TModalResult)
              begin
                if aResult = mrYes then
                begin

                end;
              end);

Devil1925 11. Jan 2018 09:35

AW: [FMX IOS] MessageDLG mit iOS 11.2.2
 
Moin, dein Lösungsansatz funktioniert an und für sich, Bleibt hier nun das Fenster mit der Abfrage stehen bis die angegebene Methode komplett durchgelaufen ist. kann man das Irgendwie Ändern?

Darlo 11. Jan 2018 09:48

AW: [FMX IOS] MessageDLG mit iOS 11.2.2
 
Schau Dir mal den Link an:
http://docwiki.embarcadero.com/Libra....DialogService
Ansonsten einen neuen Thread starten.

Devil1925 11. Jan 2018 09:56

AW: [FMX IOS] MessageDLG mit iOS 11.2.2
 
Kann es sein, dass FMX.DialogService erst ab Berlin verfügbar ist? weil ich nutze derzeit noch Seattle. Und wenn ich versuche FMX.DialogService zu nutzen, dann kann der Name nicht aufgelöst werden.

Mavarik 11. Jan 2018 10:42

AW: [FMX IOS] MessageDLG mit iOS 11.2.2
 
Modale Abfragen mit Messagedialogen sind schon länger nicht mehr möglich, auf Android noch länger.

Du must die Programmlogik dann so umstellen, dass es erst weiter geht, wenn die procedure aufgerufen wird.

Mavarik

Devil1925 11. Jan 2018 10:58

AW: [FMX IOS] MessageDLG mit iOS 11.2.2
 
Habe es jetzt durch eine ganz wirre Kapselung hinbekommen...
Delphi-Quellcode:
Begin
  if msgYesNo('Nachricht') then
    DoSomeThing;
End;

function msgYesNo(msg:String):Boolean;
Begin
    Result := MessageDlg(MSG, TMsgDlgType.mtConfirmation, [TMsgDlgBtn.mbYes, TMsgDlgBtn.mbNo], 0) = mrYes;
End;
Damit funktioniert der Aufruf unter iOS 11.2.2 wieder einwandfrei.
(muss natürlich noch nen bisschen Testen, scheint aber zu funktionieren)

Mavarik 11. Jan 2018 11:14

AW: [FMX IOS] MessageDLG mit iOS 11.2.2
 
Zitat:

Zitat von Devil1925 (Beitrag 1390777)
Habe es jetzt durch eine ganz wirre Kapselung hinbekommen...


So macht man das nicht mehr... Modale MessageDialog sind auf mobilen Plattformen NICHT MEHR MÖGLICH

Darlo 11. Jan 2018 11:22

AW: [FMX IOS] MessageDLG mit iOS 11.2.2
 
Zitat:

Zitat von Mavarik (Beitrag 1390778)
Zitat:

Zitat von Devil1925 (Beitrag 1390777)
Habe es jetzt durch eine ganz wirre Kapselung hinbekommen...


So macht man das nicht mehr... Modale MessageDialog sind auf mobilen Plattformen NICHT MEHR MÖGLICH

Sicher?
http://docwiki.embarcadero.com/Libra...ogs.MessageDlg
Zitat:

The following table summarizes which platforms support which calls to MessageDlg and whether those calls are blocking or non-blocking:
Platform Without ACloseDialogProc With ACloseDialogProc
Windows Blocking Blocking
OS X Blocking Blocking
iOS Blocking Non-blocking
Android Non-blocking

Mavarik 11. Jan 2018 11:31

AW: [FMX IOS] MessageDLG mit iOS 11.2.2
 
Emm...

Zitat:

Zitat von Darlo (Beitrag 1390779)
Zitat:

iOS Blocking Non-blocking
Android Non-blocking

Ja wie du selber postest... Abgesehen davon:
Zitat:

Warning: MessageDlg is deprecated. Please use Platform.IFMXDialogServiceAsync.MessageDialogAsync .
Grüsse

Mavarik

DeddyH 11. Jan 2018 11:35

AW: [FMX IOS] MessageDLG mit iOS 11.2.2
 
Unter iOS wird Blocking auch unterstützt, das steht im Zitat. Und es geht hier um Seattle, da is nix mit deprecated.

Darlo 11. Jan 2018 11:46

AW: [FMX IOS] MessageDLG mit iOS 11.2.2
 
Android ist immer nonblocking, bei iOS ist blocking noch möglich:
Without ACloseDialogProc
iOS Blocking

Mavarik 11. Jan 2018 12:18

AW: [FMX IOS] MessageDLG mit iOS 11.2.2
 
Zitat:

Zitat von DeddyH (Beitrag 1390783)
Unter iOS wird Blocking auch unterstützt, das steht im Zitat. Und es geht hier um Seattle, da is nix mit deprecated.

Das mag ja sein, aber eigentlich ist für FMX jede ältere Version als die aktuelle deprecated. :stupid:

Zitat:

Zitat von Sir_Rufo
Mach es doch einfach richtig...

Man muss es - wenn der code auf allen Plattformem laufen soll, sowieso non blocking machen... Und wenn es so noch funktionieren würde, gäbe es diesen Thread nicht...

Devil1925 11. Jan 2018 13:01

AW: [FMX IOS] MessageDLG mit iOS 11.2.2
 
ok... dann nochmal eine Frage meinerseits: Wie stelle ich das jetzt an, dass ich mein MessageDlg habe, und die ACloseDialogProc so ausgeführt wird, dass das Message Fenster dabei nicht mehr angezeigt wird? weil solange das angezeigt wird, kann ich auch noch auf die buttons drücken und entsprechende aktionen starten.

Strally 11. Jan 2018 13:16

AW: [FMX IOS] MessageDLG mit iOS 11.2.2
 
Hallo,

vielleicht liefert dieser Link ein paar Ideen zum Thema MessageDlg

[Mimicing MessageDlg on mobile platforms]

https://community.embarcadero.com/bl...bile-platforms

Mfg
Strally

Darlo 11. Jan 2018 13:27

AW: [FMX IOS] MessageDLG mit iOS 11.2.2
 
Nicht getestet, müsste aber nach meinem Verständnis gehen:
Delphi-Quellcode:
MessageDLG('Blubb',
    TMsgDlgType.mtInformation, [TMsgDlgBtn.mbYes] ,0,
            procedure(const AResult: System.UITypes.TModalResult)
              begin
                if aResult = mrYes then
                begin
                    TThread.CreateAnonymousThread(procedure ()
                    begin
                      //makeit
                    end).Start;
                end;
              end);

himitsu 11. Jan 2018 13:36

AW: [FMX IOS] MessageDLG mit iOS 11.2.2
 
Delphi-Referenz durchsuchenTThread.ForceQueue wäre bestimmt sicherer. (threadsafe)

Im Prinzip die Eventmethode schnell wieder verlassen und dann irgendwie "verzögert" das die gewünschte Funktion ausführen.

Mavarik 11. Jan 2018 13:59

AW: [FMX IOS] MessageDLG mit iOS 11.2.2
 
Zitat:

Zitat von Devil1925 (Beitrag 1390795)
ok... dann nochmal eine Frage meinerseits: Wie stelle ich das jetzt an, dass ich mein MessageDlg habe, und die ACloseDialogProc so ausgeführt wird, dass das Message Fenster dabei nicht mehr angezeigt wird? weil solange das angezeigt wird, kann ich auch noch auf die buttons drücken und entsprechende aktionen starten.

Ich mache es so, dass ich ein PNG-Image 1px x 1px über das ganze Fenster lege in schwarz mit transparent 40%.
Delphi-Quellcode:
Hittest := false;

Darlo 11. Jan 2018 14:22

AW: [FMX IOS] MessageDLG mit iOS 11.2.2
 
Zitat:

Zitat von Mavarik (Beitrag 1390806)
Zitat:

Zitat von Devil1925 (Beitrag 1390795)
ok... dann nochmal eine Frage meinerseits: Wie stelle ich das jetzt an, dass ich mein MessageDlg habe, und die ACloseDialogProc so ausgeführt wird, dass das Message Fenster dabei nicht mehr angezeigt wird? weil solange das angezeigt wird, kann ich auch noch auf die buttons drücken und entsprechende aktionen starten.

Ich mache es so, dass ich ein PNG-Image 1px x 1px über das ganze Fenster lege in schwarz mit transparent 40%.
Delphi-Quellcode:
Hittest := false;

Ich mache es ähnlich. Ein Layout mit alContent, dadrauf ein halbtransparentenz Rectangle mit alClient und einen TAniIndicator + Label.

Mavarik 11. Jan 2018 14:40

AW: [FMX IOS] MessageDLG mit iOS 11.2.2
 
Zitat:

Zitat von Darlo (Beitrag 1390807)
Ich mache es so, dass ich ein PNG-Image 1px x 1px über das ganze Fenster lege in schwarz mit transparent 40%.
Delphi-Quellcode:
Hittest := false;
Ich mache es ähnlich. Ein Layout mit alContent, dadrauf ein halbtransparentenz Rectangle mit alClient und einen TAniIndicator + Label.

:thumb:

Tja, schade das diese Idee nicht auf mehr Begeisterung gestoßen ist...

Mavarik

mensch72 11. Jan 2018 16:46

AW: [FMX IOS] MessageDLG mit iOS 11.2.2
 
..."Tja, schade das diese Idee nicht auf mehr Begeisterung gestoßen ist..."...

du warst nicht hartnäckig genug oder die Umfrage war nicht präsent genug;)

Frag doch den ChefMod ob er nicht ne für alle sichtbare "zentrale" Umfrage für 1..2 Wochen auf der Startseite einschalten könnte.

Neben deinen da genannten Themen gäbe es ja aktuell zusätzlich noch als weitere sinnvolle Themenblöcke "Installation IDE,.NET,JAVA,SDK's und PA-Server" und "Voll virtualisierte Einrichtung" jeweils mit&für ANDROID,IOS,OSX,FMXLINUX,CROSSVCL,WINDOWS.

Rollo62 12. Jan 2018 06:57

AW: [FMX IOS] MessageDLG mit iOS 11.2.2
 
Zitat:

TAniIndicator + Label.
Mache ich auch so,aber der AniIndicator kann unter bestimmten Umständen ruckeln,
je nachdem welche Phone-Funktionen man im Thread benutzten will.
Die sind wohl nicht Alle so sauer threadsafe wie sie sein sollen.

Deshalb ist das einfache "grau hinterlegen" wie Mavarik vorschlägt schon universeller.
Muss man halt probieren wann es animiert gut geht, und wann besser nicht.

Man kann auch eine eigene Animation machen, die dann etwas "langsamer" läuft, aber optisch trotzdem gut aussieht.

Rollo


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:22 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