Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Android MessageDlg (https://www.delphipraxis.net/188277-android-messagedlg.html)

greenmile 16. Feb 2016 11:02

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.

Sir Rufo 16. Feb 2016 11:12

AW: Android MessageDlg
 
Zeig doch mal den Code wie du den
Delphi-Quellcode:
MessageDlg
aufrufst.

greenmile 16. Feb 2016 12:31

AW: Android MessageDlg
 
Code:
  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;
Wobei es egal ist, ob ich eine "echte" Callback Prozedur verwende oder diese gefakte.

himitsu 16. Feb 2016 13:17

AW: Android MessageDlg
 
Wenn Dialoge nicht mehr modal sind, warum sollten andere Formen dann auch gesperrt werden?

greenmile 16. Feb 2016 13:23

AW: Android MessageDlg
 
Zitat:

Zitat von himitsu (Beitrag 1330502)
Wenn Dialoge nicht mehr modal sind, warum sollten andere Formen dann auch gesperrt werden?

Sie müssen ja nicht gesperrt sein. Eine Messagebox muss aber Always-On-Top sein. Kann man verstehen, muss man aber nicht. Always-On-Top <> Modal.

himitsu 16. Feb 2016 13:27

AW: Android MessageDlg
 
Ach stimmt ja.

Sicher daß der Dialog im Hintergrund verschwindet und nicht geschlossen wird, wenn man daneben klickt?

greenmile 16. Feb 2016 13:39

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 :)

Sir Rufo 16. Feb 2016 14:03

AW: Android MessageDlg
 
Und
Delphi-Quellcode:
Delay
ruft bestimmt auch noch
Delphi-Quellcode:
Application.ProcessMessages
auf?

Es gibt einen Grund, warum es die klassischen modalen Fenster unter Android nicht gibt:

:arrow:
Delphi-Quellcode:
Application.ProcessMessages
findet Android total doof!

Du bringst das aber durch die Hintertür wieder hinein und wunderst dich, warum es nicht funktioniert. :stupid:

greenmile 16. Feb 2016 14:13

AW: Android MessageDlg
 
Das Problem hat ja nichts mit Delay zu tun. Das Fenster ist irgendwie nicht Always-On-Top.

himitsu 16. Feb 2016 14:21

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.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:31 Uhr.
Seite 1 von 2  1 2      

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