Einzelnen Beitrag anzeigen

devidespe

Registriert seit: 7. Sep 2006
Ort: Berlin
434 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: Einfacher thread der nur ein MessageDlg anzeigt erzeugen

  Alt 3. Jan 2009, 17: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
57 65 72 20 6C 65 73 65 6E 20 6B 61 6E 6E 2C 20 69 73 74 20 6B 6C 61 72 20 69 6D 20 56 6F 72 74 65 69 6C 21
  Mit Zitat antworten Zitat