Hi Leute,
ich habe eine Frage zu ShowModal auf Android. Wie verwende ich es wenn ich auf eine Benutzereingabe warten möchte? Wenn ich ein Dialog in einer Procedure aufrufe, wird nicht darauf gewartet bis das Modale Fenster wieder geschlossen wurde.
Ich habe mal eine Beispiel Procedure geschrieben. In der function GetRot() sollte solange gewartet werden, bis sich das Modale Fenster wieder schließt und einen Rückgabewert hat, da sonst immer ein leerer String übergeben wird.
Wie löst man das am Besten?
Delphi-Quellcode:
procedure TfrmMain.CreateFarbe();
var
Rot, Gruen, Blau:
String;
begin
// Buttonindex holen
Index := (Sender
as TButton).Tag;
Rot := '
';
Gruen := '
';
Blau := '
';
l := Length('
RGB');
for i := 1
to l
do
begin
ch := Copy('
RGB', i,i);
if ch = '
R'
then
begin
Rot := GetRot;
if Rot = '
'
then
Exit;
end
else if ch = '
G'
then
begin
Gruen := GetGruen;
if Gruen = '
'
then
Exit;
end
else if ch = '
B'
then
begin
Blau := GetBlau;
if Blau = '
'
then
Exit;
end;
end;
FarbeZusammenstellen(Rot, Gruen, Blau)
end;
function TfrmMain.GetRot:
String;
var
dlgRot: TfrmFarbauswahl;
sRot:
String;
begin
dlgRot := TfrmFarbauswahl.Create(
nil);
dlgRot.ShowModal(
procedure(ModalResult: TModalResult)
begin
if ModalResult = mrOk
then
begin
sRot := dlgRot.lbRot.Items[dlgRot.lbRot.ItemIndex];
end;
if ModalResult = mrCancel
then
begin
sRot := '
';
end;
dlgRot.Close;
end
);
Result := sRot;
end;