Hi eticket,
eine entsprechende Komponente heißt CPort. Such mal hier im Forum danach oder bei SourceForge. Wenn du deine Oberfläche aus deinem Thread heraus aktualisieren willst, dann kannst du das auch über ein Ereignis machen. Dieses kannst du in deinem Thread deklarieren und wie ein normales Ereignis mit deinem MainWindow zuweisen.
Delphi-Quellcode:
TMyThread = class(TThread)
...
protected
procedure DoReceiveData;
...
public
property ReceiveData : TNotifyEvent read FReceiveData write FReceiveData;
end;
TForm1 = class(TForm)
...
public
procedure OnReceiveData(Sender : TObject);
end;
procedure TMyThread.DoReceiveData;
begin
IF Assigned(FReceiveData) then FReceiveData(self);
end;
// Aufruf aus dem Thread wenn Daten empfangen
Syncronize(DoReceiveData);
procedure TForm1.OnReceiveData(Sender : TObject);
var MyThread : TMyThread;
begin
IF not (Sender is TMyThread) then Exit;
MyThread := TMyThread(Sender);
// und auf Daten zugreifen
...
end;
Du kannst natürlich auch eine eigene Procedure of Object definieren in der du die Daten gleich hochreichst.
TReceiveDataEvent = procedure (Sender : TMyThread; Data : String) of Object;
Wichtig ist, dass du die Methode zum Absetzen des Ereignisses mit Syncronize aus deinem Thread heraus aufrufst.
Gruß oki