ich hack einfach hier mal los (also es ist nicht getestet):
Delphi-Quellcode:
const
MyMessage = WM_USER + 838;
type
TMyForm= class(TForm)
procedure MyMessageRoutine(var Message: TMessage); message WM_MyMessage;
end;
procedure TMyForm.MeinRoutineInderIchwasAendernwillAberNichtkann(Sender: TObject);
begin
PostMessage(Self.Handle, WM_MyMessage, 0, 0);
end;
procedure TMyForm.MyMessageRoutine(var Message: TMessage); message WM_MyMessage;
begin
// hier machen was nicht ging.
end;
geht wie folgt. in der execute methode kannst du den port nicht ändern weil der workerthread dann gekillt wird und du allerding noch im workerthread bist.
die funktion postmessage trägt einen eintrag in die nachrichtenwarteschlage von deine form ein.
wenn dann dein form wieder etwas abarbeiten kann (z.b. wenn die onExec durch ist)
wird die routine MyMessageRoutine aufgerufen.