Einzelnen Beitrag anzeigen

StTüff

Registriert seit: 3. Dez 2002
132 Beiträge
 
Delphi 2006 Enterprise
 
#6

Re: MessageDlg in Thread aufrufen?

  Alt 31. Aug 2005, 16:06
Ich möchte meine Lösung kurz vorstellen:

Meine Klasse sieht jetzt so aus:
Delphi-Quellcode:
TTestThread = class(TThread)
  private
    { Private-Deklarationen }
  protected
    Msg: string;
    DlgType: TMsgDlgType;
    Buttons: TMsgDlgButtons;
    HelpCtx: Longint;
    DlgResult: Integer;
    procedure ThreadDlg();
    procedure Execute; override;
  public
    function ThreadDlgExecute(const InMsg: string; InDlgType: TMsgDlgType;
      InButtons: TMsgDlgButtons; InHelpCtx: Longint):integer;
  end;
Die Funktionen:
Delphi-Quellcode:
procedure TTestThread.ThreadDlg();
begin
  DlgResult:=MessageDlg(Msg, DlgType, Buttons, HelpCtx);
end;
function TTestThread.ThreadDlgExecute(const InMsg: string; InDlgType: TMsgDlgType;
      InButtons: TMsgDlgButtons; InHelpCtx: Longint):integer;
begin
  Msg:=InMsg;
  DlgType:=InDlgType;
  Buttons:=InButtons;
  HelpCtx:=InHelpCtx;
  Synchronize(ThreadDlg);
  result:=DlgResult;
end;
Das schöne daran ist, dass ich nur den Funktionsaufruf geringfügig ändern muss:
MessageDlg('Fehlfunktion!',mtError ,[mbOK],0); in
form1.Thread.ThreadDlgExecute('Fehlfunktion!',mtError ,[mbOK],0); und ich kann die Funktion auch von außerhalb des Threads aufrufen und es geht trotzdem.

Was meint Ihr Kann man das so machen, oder ist das "unsauber"

Gruß und besten Dank schon mal für die konstruktive Kritik....

StTüff
  Mit Zitat antworten Zitat