Ich habe eine Pop-up-Ladebildschirm Formular erstellt, die ich über jede andere Form in einem Firmonkey Multi-Gerät-Projekt zeigen möchte. Jetzt bin ich auf das Problem gestoßen, dass der Ladebildschirm nicht mit den Dingen aktualisiert wird, die ich im Hintergrund Formular mache. Wie kann ich das lösen?Firemonkey tun Zeug im Hintergrund Form Delphi 10 Seattle
Im folgenden Code ist ein Beispiel dafür, was ich versucht habe:
procedure TForm1.Button1Click(Sender: TObject);
var
loadScreen:TfrmLoadScreen;
begin
loadScreen := TfrmLoadScreen.Create(nil);
loadScreen.ShowModal(
procedure(ModalResult: TModalResult)
var
i:Integer;
begin
for i := 0 to 200 do
begin
loadScreen.CurrentItem := i;
loadScreen.TextMessage := 'Item:' + loadScreen.CurrentItem.ToString;
Sleep(100);
end;
ModalResult := mrCancel;
end);
end;
Ich glaube, ich habe einige Multi-Threading zu tun, aber ich habe keine Erfahrung dies zu tun! Wie soll ich das für meinen Ladescreen machen?
Ich habe auch versucht, die folgende, aber die Form erhält nicht gezeigt:
procedure TForm1.Button1Click(Sender: TObject);
var
loadScreen:TfrmLoadScreen;
begin
loadScreen := TfrmLoadScreen.Create(nil);
loadScreen.OnShow := FormShowLoadScreen;
loadScreen.Show;
end;
procedure TForm1.FormShowLoadScreen(Sender: TObject);
var
i:Integer;
loadScreen:TfrmLoadScreen;
begin
loadScreen := TfrmLoadScreen(Sender);
for i := 0 to 200 do
begin
loadScreen.CurrentItem := i;
Sleep(100);
end;
loadScreen.Close;
end;
Um ein modales Formular zu schließen, setzen Sie seine Eigenschaft ModalResult auf einen Wert ungleich Null. – RBA
@RBA Ja, das stimmt. Aber das löst mein Problem nicht. Mein Ladebildschirm wird nicht aktualisiert! – Remi
Die Callback-Methode heißt ** nachdem ** das Formular geschlossen wurde. Alles, was Sie dort im geschlossenen Formular tun, ist für niemanden sichtbar. –