![]() |
Android MessageDlg
Hallo,
ich habe gerade mit erschrecken festgestellt, dass unter XE8=>Firemonkey=>Android die MessageDlg nicht Always-On-Top ist. Ich kann also auf meinem Handy in den Hintergrund klicken und die Messagebox ist weg. Ich weiß, ich sollte keine Messageboxen verwenden. Aber gibt es einen Workaround? Ich kenne ja das Handle von dem Messagebox-Fenster nicht, um es immer wieder in den Vordergrund zu holen. |
AW: Android MessageDlg
Zeig doch mal den Code wie du den
Delphi-Quellcode:
aufrufst.
MessageDlg
|
AW: Android MessageDlg
Code:
Wobei es egal ist, ob ich eine "echte" Callback Prozedur verwende oder diese gefakte.
MsgDlgResult := -1;
FMX.Dialogs.MessageDlg(Msg, DlgType, Buttons, HelpCtx, procedure(const AResult: TModalResult) begin MsgDlgResult:= AResult; end ); while MsgDlgResult<0 do Delay(10); Result := MsgDlgResult; |
AW: Android MessageDlg
Wenn Dialoge nicht mehr modal sind, warum sollten andere Formen dann auch gesperrt werden?
|
AW: Android MessageDlg
Zitat:
|
AW: Android MessageDlg
Ach stimmt ja.
Sicher daß der Dialog im Hintergrund verschwindet und nicht geschlossen wird, wenn man daneben klickt? |
AW: Android MessageDlg
Ne die ist im Hintergrund. Durch die Funktion oben wird ja gewartet, bis der User OK, Abbrechen oder sonstwas klickt. Klickt er nun daneben, dann wartet das Programm weiter, nur dass der User nichts mehr klicken kann, er sieht die Box ja nicht mehr. Damit lässt sich das wunderbar nachvollziehen.
PS: Es ist erschreckend, wie schnell Google's Indexdienst arbeitet. Habe eben nochmal gegoogelt und diesen Beitrag gefunden :) |
AW: Android MessageDlg
Und
Delphi-Quellcode:
ruft bestimmt auch noch
Delay
Delphi-Quellcode:
auf?
Application.ProcessMessages
Es gibt einen Grund, warum es die klassischen modalen Fenster unter Android nicht gibt: :arrow:
Delphi-Quellcode:
findet Android total doof!
Application.ProcessMessages
Du bringst das aber durch die Hintertür wieder hinein und wunderst dich, warum es nicht funktioniert. :stupid: |
AW: Android MessageDlg
Das Problem hat ja nichts mit Delay zu tun. Das Fenster ist irgendwie nicht Always-On-Top.
|
AW: Android MessageDlg
Android ist mehr Eventgesteuert, also "führe xyz aus, wenn abc".
Aber auch im normalen Delphi Windows muß man mit Warteschleifen etwas aufpassen. [OT] Es gibt Addons/Systeme um die Serverlast zu minimieren. Anstatt Google ständig alle Seiten runterläd und parst, sagt man dem wenn es was Neues gibt und wo sich das befindet. |
AW: Android MessageDlg
Ja das ist mir klar. Aber selbst auf "anderem" weg ist die Messagebox nicht On-Top.
|
AW: Android MessageDlg
Nimm dir eine schwarze Grafik
Opacity := 0.6 | align content | Hittest := true Darauf den Dialog... Fertig... |
AW: Android MessageDlg
Zitat:
Kleines Übungsblatt dazu:
|
AW: Android MessageDlg
Liste der Anhänge anzeigen (Anzahl: 1)
Beispiel!
|
AW: Android MessageDlg
Vielleicht solltest Du mal meine Texte lesen bevor Du bissig antwortest. Da steht alles mehrfach drin.
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
|
AW: Android MessageDlg
Probierst du bitte einmal folgendes aus?
Delphi-Quellcode:
procedure TForm1.Button1Click( Sender: TObject );
begin MessageDlg( 'Augen öffnen?', TMsgDlgType.mtConfirmation, [ TMsgDlgBtn.mbYes, TMsgDlgBtn.mbNo ], 0, TMsgDlgBtn.mbNo, procedure ( const AResult: TModalResult ) begin Button1.Text := IntToStr( AResult ); end ); end;
PS Dieses Verhalten ist so nur bei Android zu finden! Weil dieses Verhalten auf der Plattform normal ist. Bei allen anderen Plattformen (OSX, iOS, Windows) muss man auf irgendeinen Button des Dialogs drücken, damit dieser verschwindet und dadurch ist
Delphi-Quellcode:
immer >= 0 ... nur bei Android ist der Wert >= -1.
AResult
|
AW: Android MessageDlg
Danke für die Antwort und die Eklärung (geht doch :-D). Ich teste das gleich mal.
|
AW: Android MessageDlg
Zitat:
Ersetze Annahmen durch Gewissheit (Debugger, einfache Ausgabe der Werte) :stupid: |
AW: Android MessageDlg
Installiere eben noch das Update 1, das fehlte doch.
|
AW: Android MessageDlg
Kurzes Update: Delphi 10 und schon klappt alles. Danke.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:23 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz