Hallo zusammen, ich möchte mit diesem Post nochmal das Thema asynchrone Dialoge aufgreifen, da ich dazu bislang keine wirklich hilfreichen Infos finden konnte.
Wenn man Code programmiert, der auf verschiedenen Platformen laufen soll (z.B. Android), kommt man um die Verwendung asynchroner Dialoge nicht herum. Manchmal braucht man aber eine Eingabe, bevor es Sinn macht, mit dem Programmablauf weiterzumachen. In den durchsuchten Beiträgen habe ich bislang für solche Situationen nur etwas unspezifische Hinweise auf die Callback-Funktion der Dialoge gefunden. Ich habe mir daher einen "work-around" zurechtgebastelt, wie er im nachfolgenden Code-Beispie zu sehen ist.
Delphi-Quellcode:
type
Tproc = procedure of object;
var
JmpIdx: Integer;
res: String;
procedure xInput(xTitle, xPrompt, xDefault: String; xProc: Tproc);
begin
TDialogServiceAsync.InputQuery(xTitle, xPrompt, xDefault,
procedure(const ARes: TModalResult; const AVal: array of String)
begin
if ARes=mrOk then
res := AVal[0]
else
res := '';
xProc;
end);
end;
procedure TForm1.xyz;
var
s: String;
Label
lbl01;
begin
case JmpIdx of
1: Goto lbl01;
end;
JmpIdx := 1;
xInput('Titel', 'Prompt', 'Default', xyz);
exit;
lbl01:
Label1.Text := res;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
JmpIdx := 0;
xyz;
end;
Das ganze funktioniert zwar wie gewünscht, ist aber fürchterlicher Programmierstil - nur ist mir halt eben bislang dazu nix Besseres eingefallen.
Daher meine Frage: Wie handhabt ihr den Umgang mit asynchronen Dialogen?
Ich bin für alle Anregungen dankbar
Viele Grüße