Synchronize benötigt eine Prozedur als Übergabeparameter.
Delphi-Quellcode:
interface
type
TTest = class(TThread)
private
FEdit: TEdit;
FEditValue: String;
procedure SetEditText;
published
property Edit: TEdit read FEdit write FEdit; // Edit-Property musst du von aussen das Edit-Feld zuweisen, bevor der Thread gestartet wird. Alternativ kannst du es auch im Constructor mitübergeben, wenn du ihn entsprechend umbaust
end;
...
implementation
procedure TTest.SetEditText;
begin
FEdit.Text := FEditValue;
end;
procedure TTest.Execute;
begin
while not Terminated do
begin
FEditValue := 'irgendwas';
Synchronize(SetEditText);
Sleep(1);
end;
end;
Alternativ kannst du auch das FEditValue Property publishen und von aussen über einen Timer oder so den Wert auslesen, statt in dem Thread das Edit zu setzen.