Hallo,
ich lasse in einer Schleife mehrere Reports drucken (bis zu 100 Stück) - hier handelt es sich um ein Mahnwesen-Plugin. Nun möchte ich, dass während dem Druck die Form2 angezeigt und ständig neu gezeichnet wird. Es ist eine "Bitte-warten"-Form mit einer UbuntuProgressBar.
Dazu habe ich einen simplen Thread gebaut. Hier mal der Code.
Delphi-Quellcode:
TRefreshThread = class(TThread)
private
public
Form: TForm;
kill: Boolean;
protected
procedure ShowForm;
procedure doRefresh;
procedure Execute; override;
end;
procedure TRefreshThread.ShowForm;
begin
ShowMessage('SD');
Form2.Visible:=True;
end;
procedure TRefreshThread.doRefresh;
begin
while not (kill) do
begin
Form2.Refresh;
Form2.Repaint;
end;
end;
procedure TRefreshThread.Execute;
begin
ShowForm; //Fehlerbeschreibung weiter unten
Synchronize(doRefresh); //Fehlerbeschreibung weiter unten
end;
//Aufruf:
procedure ....
var
...
begin
rt:=TRefreshThread.Create(True);
rt.kill:=False;
rt.Form:=Form2;
rt.Resume;
...
end;
Wenn ich in der Execute-Methode beide Methoden mit Synchronize aufrufe tut sich garnichts. Keine Form poppt auf, keine Message. Rufe ich eine / oder beide Methode ohne Synchronize auf, poppt Form2 und die MessageBox auf, aber erst nachdem der Druckvorgang abgeschlossen ist.
Was mache ich falsch? Das müsste doch so funktionieren?
Vielen Dank