Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   Android 4.2 vs 5.0+ (https://www.delphipraxis.net/188850-android-4-2-vs-5-0-a.html)

wschrabi 13. Apr 2016 15:12

Android 4.2 vs 5.0+
 
Hallo,
habe mit XE6 einen InputQuery Dialog auf Android fein hingegriegt. Doch wie ich jetzt auf Seattle und Android 5.0+ umgestiegen bin, schreibt mein Android 4.2 Tablet, dass

Dialogfelder werden blockiert ist auf dieser Plattform nicht implementiert. AUf der Android Plattform werden nur Überladungen mit TINputCloseBoxProc oder TINputCloseBoxEvent unterstützt.

Was kann ich tun? Damit wieder der INput von Strings als DIalog möglich ist?
Danke
mfg
Walter

DeddyH 13. Apr 2016 15:48

AW: Android 4.2 vs 5.0+
 
Delphi-Referenz durchsuchenInputQuery
Zitat:

Wenn im Aufruf von InputQuery der Parameter ACloseQueryProc nicht enthalten ist, wird der Aufruf auf allen Plattformen blockiert; d. h., InputQuery kehrt erst zurück, wenn das Dialogfeld geschlossen wird. Android unterstützt keine blockierenden Aufrufe; Sie können InputQuery unter Android nur verwenden, wenn Sie den Parameter ACloseQueryProc angeben.

wschrabi 13. Apr 2016 19:07

AW: Android 4.2 vs 5.0+
 
Danke, aber ich habe es so probiert um nicht viel umschreiben zu müssen, aber es klappt nicht.
Weiß wer was ich falsch mache?

Delphi-Quellcode:
function TForm1.MyInputQuery(line1: string; line2: string; var invar: string): boolean;
var
   myResult:boolean;
   myVal: string;
begin

InputQuery( line1, [line2], [invar],
    procedure(const AResult: TModalResult; const AValues: array of string)
    begin
    if AResult=mrOK then
      begin
      myResult:=true;
      MyVal:=AValues[0];
      ShowMessage(' EIngabe: '+myval);
      end
    else
      begin
      myResult:=false;
      Myval:='';
      end;
    end);
   
 Result:=myResult;
 if Result then invar:=myVal else invar:='';
 
end;

DeddyH 13. Apr 2016 20:09

AW: Android 4.2 vs 5.0+
 
Du hast die verlinkte Doku nicht genau gelesen. Code hinter dem InputQuery wird bei der nicht blockierenden Variante ausgeführt, bevor das Dialogfeld geschlossen wird.

wschrabi 13. Apr 2016 20:35

AW: Android 4.2 vs 5.0+
 
Ja danke, aber ich möchte dass der Programmablauf wieder anhaltet solange keine Eingabe getätigt wurde.
Ich hab die ganze Logik darauf aufgebaut.
WIe siehts damit aus? Bin am Knoblen und um jeden Rat dankbar.

Delphi-Quellcode:
function TForm1.MyInputQuery(line1: string; line2: string; var invar: string): boolean;
var
   myResult:integer;
   myVal: string;
begin
myResult:=3;

InputQuery( line1, [line2], [invar],
    procedure(const AResult: TModalResult; const AValues: array of string)
    begin
       //repeat
          if AResult=mrOK then
            begin
            myResult:=1;
            MyVal:=AValues[0];
            ShowMessage(' EIngabe: '+myval);
            end
          else
            begin
            myResult:=2;
            Myval:='';
            end;
       //until ((AResult=mrOK) or (AResult=mrCancel));
    end);
   
 repeat
    case myResult of
      1: begin Result:=true; end;
      2: begin Result:=false; end;
      3: begin Result:=false; end;
    end;
    if Result then invar:=myVal else invar:='';
 until myresult <> 3;
 toast(' EIngabe getätigt!');
end;

DeddyH 13. Apr 2016 20:54

AW: Android 4.2 vs 5.0+
 
Du kannst Dir beispielsweise eine Property samt Setter deklarieren. Innerhalb der anonymen Methode setzt Du dann den Wert dieser Property, damit wird dann auch der Setter durchlaufen.

wschrabi 13. Apr 2016 21:14

AW: Android 4.2 vs 5.0+
 
Aber wie bleibt dann der PRogrammablauf stehen, denn ich habe viele solche Abfragen:

Delphi-Quellcode:
if InputQuery('name','Name',name) and name.trim <> '' then begin ... end
Ich weiß ich könnte den nachfolgenden Teil in die anym-Procedure reinschreiben, doch ich hab einen menge und will nicht viel ändern.

Am schönsten wäre es wenn man die neue MyInputQuery so machen kann, dass auch der PRogrammablauf nach Eingabe weitergeht.

So wie es in Android 4.2 auch war.

das mit der Proterty ist ja ählich der Weise, mit der Variablen in meinen Beispiel ? oder?
Schön wäre ein kleines Bsp. Dann lerne ich am schnellsten.
danke herzlich

DeddyH 13. Apr 2016 21:18

AW: Android 4.2 vs 5.0+
 
Du musst Deine Abläufe umstellen, auch wenn Du das jetzt nicht gerne hörst. Blockierend wird von Android nicht mehr zugelassen.

wschrabi 13. Apr 2016 21:30

AW: Android 4.2 vs 5.0+
 
Ja das hab ich ja befürchtet, das ist viel ARbeit.

DeddyH 13. Apr 2016 21:33

AW: Android 4.2 vs 5.0+
 
Das ist zwar bitter, aber eine andere Möglichkeit wüsste ich nicht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:16 Uhr.
Seite 1 von 2  1 2      

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