AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung Android procedure auf ShowModal warten
Thema durchsuchen
Ansicht
Themen-Optionen

Android procedure auf ShowModal warten

Ein Thema von NickD · begonnen am 29. Jul 2015 · letzter Beitrag vom 31. Jul 2015
Antwort Antwort
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.154 Beiträge
 
Delphi 10.3 Rio
 
#1

AW: Android procedure auf ShowModal warten

  Alt 29. Jul 2015, 11:03
Unter Android ist ein ShowModal ein "Don't do"...

Mavarik
Du meinst sicher ein blockierendes ShowModal
Ja wie der Name schon sagt...

Zitat von EMBT:
Use ShowModal to show a form as a modal form. A modal form is one where the application can't continue to run until the form is closed...
  Mit Zitat antworten Zitat
greenmile

Registriert seit: 17. Apr 2003
1.107 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: Android procedure auf ShowModal warten

  Alt 29. Jul 2015, 11:12
Ich persönlich halte nichts von den Callbacks nur für Unterformulare oder Messageboxen, ist mir einfach zu aufwendig.
Du kannst eine globale Variable definieren die von der Unterform gefüllt wird. Das Hauptformular muss nun einfach nur solange warten, bis die Variable gefüllt ist. Beispiel:

Code:
var MsgDlgResult: Integer;

 function MessageDlg(const Msg: string; DlgType: TMsgDlgType;
   Buttons: TMsgDlgButtons; HelpCtx: Longint): Integer;
 begin
   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;
 end;
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.154 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: Android procedure auf ShowModal warten

  Alt 29. Jul 2015, 11:26

Code:
   while MsgDlgResult<0 do Delay(10);
Du hast einen Kommentar vergessen..

   while MsgDlgResult<0 do Delay(10); // Töte den Akku

Spass bei Seite... Bitte nicht.. Es gibt bessere Wege

Das war mal ein Post... Als XE6 raus gekommen ist, oder?
Ich hatte das auch so "abgetippt"

[EDIT] Habs gefunden...
Original Post war:

Delphi-Quellcode:
function MyMessageDlg(const Msg: string; DlgType: TMsgDlgType; Buttons: TMsgDlgButtons; HelpCtx: Longint): Integer;
{$IFDEF ANDROID}
var
  MsgDlgResult : Integer;
{$ENDIF}
begin
  {$IFDEF ANDROID}
  MsgDlgResult := -1;

  FMX.Dialogs.MessageDlg(Msg, DlgType, Buttons, HelpCtx,
    procedure(const AResult: TModalResult)
      begin
        MsgDlgResult:= AResult;
      end);

  while MsgDlgResult<0 do
    begin
      Application.Processmessages; // Makes Android Happy...
      Sleep(10);
    end;

    Result := MsgDlgResult;
  {$ELSE}
  Result := FMX.Dialogs.MessageDlg(Msg, DlgType, Buttons, HelpCtx);
  {$ENDIF}
end;

Geändert von Mavarik (29. Jul 2015 um 11:31 Uhr)
  Mit Zitat antworten Zitat
bra

Registriert seit: 20. Jan 2015
711 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#4

AW: Android procedure auf ShowModal warten

  Alt 29. Jul 2015, 11:57
Application.Processmessages ist eine ganz schlechte Idee unter Android/iOS...
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: Android procedure auf ShowModal warten

  Alt 29. Jul 2015, 12:17
Application.Processmessages ist eine ganz schlechte Idee unter Android/iOS...
Wieso das denn?

Dieses Application.ProcessMessages beim ShowModal ist extra für die Mobile Plattformen herausgenommen worden. Da hat sich doch bestimmt keiner etwas bei gedacht. Das ist nur um alle zu ärgern.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
bra

Registriert seit: 20. Jan 2015
711 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#6

AW: Android procedure auf ShowModal warten

  Alt 31. Jul 2015, 09:02
Application.Processmessages ist eine ganz schlechte Idee unter Android/iOS...
Wieso das denn?

Dieses Application.ProcessMessages beim ShowModal ist extra für die Mobile Plattformen herausgenommen worden. Da hat sich doch bestimmt keiner etwas bei gedacht. Das ist nur um alle zu ärgern.
Keine Ahnung, ob das jetzt ironisch gemeint war oder ich es einfach nicht verstehe...

In unserer App haben die Application.ProcessMessages jedenfalls zu massiven Problemen geführt (besonders im Zusammenhang mit Threads). Inzwischen haben wir alle bis auf eine Stelle eliminieren können und seitdem damit keine Probleme mehr. Ist ja nicht so, dass es sonst nicht schon genug Stolpersteine gäbe ^^
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.919 Beiträge
 
Delphi 12 Athens
 
#7

AW: Android procedure auf ShowModal warten

  Alt 31. Jul 2015, 10:52
Um zur Ausgangsfrage zurückzukehren:
Man macht das so, dass man auf die Events des zweiten Formulars reagiert und gar nicht wartet.

Sprich der Ablauf ist so:
  • Zeige zweites Formular an (normales Show)
  • Im zweiten Formular löse ein Event aus, wenn z.B. eine Farbe ausgewählt wurde
  • Im ersten Formular reagiere auf die Änderung der Farbe, z.B. indem etwas neu gezeichnet werden muss
  • Wenn das zweite Formular geschlossen wird, wird wieder das erste Fenster aktiv
Dann muss niemand irgendwo warten.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
NickD

Registriert seit: 10. Okt 2012
Ort: Burgsinn
53 Beiträge
 
Delphi 10.3 Rio
 
#8

AW: Android procedure auf ShowModal warten

  Alt 29. Jul 2015, 15:36
Ich habe gerade das Gefühl in dieser Situation gibt es kein "Richtig", kann das sein?
@SirRufo: Würde mich über ein bisschen Quellcode bezogen auf mein Beispiel freuen, so ganz komme ich mit den Callbacks nicht klar


@Mavarik: Wenn ich es so versuche hängt sich die komplette App auf..

Geändert von NickD (29. Jul 2015 um 16:13 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#9

AW: Android procedure auf ShowModal warten

  Alt 29. Jul 2015, 11:13
Zitat von EMBT:
Use ShowModal to show a form as a modal form. A modal form is one where the application can't continue to run until the form is closed...
Ich behaupte jetzt mal steif und fest, dass diese Aussage total falsch ist. Meine Anwendung lief weiter (diese modale Form gehört ja auch zu meiner Anwendung).

Richtig ist, dass die Methode/Prozedur, die dieses ShowModal aufruft, erst dann weiter läuft, wenn diese modale Form geschlossen wurde. Die Anwendung selber läuft einwandfrei weiter.

@greenmile

Bitte nicht ... es gibt einen guten Grund, warum die modalen Formulare auf den Mobile Devices eben nicht mehr blockierend sind.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (29. Jul 2015 um 11:16 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort

 

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 04:54 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