Einzelnen Beitrag anzeigen

DevidEspenschied

Registriert seit: 7. Sep 2006
Ort: Berlin
439 Beiträge
 
Delphi 12 Athens
 
#6

Re: Einfacher thread der nur ein MessageDlg anzeigt erzeugen

  Alt 3. Jan 2009, 18:58
Man kann aus der Execute-Methode nichts direkt von der VCL aufrufen, und dazu gehört auch ShowMessage. Du must im Protected-Abschnitt eine eigene Procedure deklarieren, die wiederum ShowMessage aufruft:

Delphi-Quellcode:
TMessageBoxThread = class(TThread)
  private
    { Private-Deklarationen } 
  protected
    text: string;
    procedure Execute; override;
    procedure StarteThread; virtual; abstract;
  public
    constructor Create(msg:string);
  end;
In der Execute-Methode erscheint nur folgendes:

Delphi-Quellcode:
procedure TMessageBoxThread.Execute;
begin
  Synchronize(StarteThread);
end;
und in der StarteThread-Methode der eigentliche Aufruf von ShowMessage:

Delphi-Quellcode:
procedure TMessageBoxThread.StarteThread;
begin
  ShowMessage(text);
end;
Probiere das mal aus.
Devid
Devid Espenschied
Pre-sales Consultant
Embarcadero Germany GmbH
germany.info@embarcadero.com

Kein Support per PN
  Mit Zitat antworten Zitat