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.