Einzelnen Beitrag anzeigen

Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#1

Thread wird nicht ausgeführt

  Alt 30. Okt 2009, 12:25
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
  Mit Zitat antworten Zitat