Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   Dialoge unter IOS und Anroid _> FMX unbenutzbar ? (https://www.delphipraxis.net/195380-dialoge-unter-ios-und-anroid-_-fmx-unbenutzbar.html)

NickD 21. Jun 2018 07:10

AW: Dialoge unter IOS und Anroid _> FMX unbenutzbar ?
 
Hallo,
ich würde hier gerne nochmal das Thema aufgreifen.
Da ShowModal unter iOS nicht mehr verwendbar ist, habe ich versucht alles auf Show umzustellen.
In den meisten Fällen gelingt das auch.

Wie sieht es jedoch mit folgender Konstruktion aus(Als Beispiel):
1. Form1 ruft Form2 mit einem String-Parameter auf
2. Form2 verarbeitet den String und soll diesen verarbeiteten String, nach einem Button Klick an Form1 zurückgeben
(Unit der Form1 soll nicht in Unit der Form2 eingebunden werden, da Form2 in mehreren Formen verwendet werden soll.)

Wie bekomme ich den verarbeiteten String der Form2 nun als Ergebnis zurück?

Mit ShowModal hätte ich in der Anonymen Procedure den String ausgelesen.

Hoffe ihr könnt mir einen kurzen Denkanstoß geben ;)

mfg Nick.

Schokohase 21. Jun 2018 09:37

AW: Dialoge unter IOS und Anroid _> FMX unbenutzbar ?
 
Schreib dir doch eine Methode
Delphi-Quellcode:
ShowWithCloseCallback( ACloseCallback: TProc )
und rufe diesen Callback auf, wenn die Form geschlossen wird.

Das sollte mit ein paar Zeilen Code erledigt sein.

TurboMagic 23. Jun 2018 13:46

AW: Dialoge unter IOS und Anroid _> FMX unbenutzbar ?
 
Um es mal etwas detaillierter zu erläutern:

Unit Unit2;

interface

type
TMyCallback = procedure(Sender: TObject; s: string) of Object;

TForm2 = class(TForm)
[..]
private
FMyCallback : TMyCallback;
public
procedure ShowWithCallback(Callback: TMyCallback);
end;

[..]

procedure TForm2.ShowWithCallback(Callback: TMyCallback);
begin
assert(assigned(Callback), 'Es muss ein Callback übergeben werden');
FMyCallback := Callback;
end;

Im OnClose wird es dann so aufgerufen:

FMyCallback(self, 'mein Rückgabewert');

Und Form1 braucht natürlich eine Public Methode wie folgt:

procedure TForm1.Form2ReturnCode(Sender: TObject; ReturnValue: string);

Grüße

TurboMagick


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:14 Uhr.
Seite 3 von 3     123   

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