Greetings!
Ich entwickel in FreePascal eine Threadklasse mit einem Event und einigen Eigenschaften.
Um das Problem besser zu erklären, habe ich das Beispiel kompromiert.
Delphi-Quellcode:
unit uTest;
interface
uses Classes;
type
TTestThread =
class(TThread)
private
FTestProperty:
string;
FOnTest: TNotifyEvent;
protected
procedure DoTest;
virtual;
procedure Execute;
override;
public
constructor Create(CreateSuspended: Boolean);
destructor Destroy;
override;
property TestProperty:
string read FTestProperty
write FTestProperty;
property OnTest: TNotifyEvent
read FOnTest
write FOnTest;
end;
implementation
constructor TTestThread.Create(CreateSuspended: Boolean);
begin
inherited Create(CreateSuspended);
FTestProperty := '
default';
end;
destructor TTestThread.Destroy;
begin
inherited;
end;
procedure TTestThread.DoTest;
begin
if not Assigned(FOnTest)
then
FOnTest(self);
end;
procedure TTestThread.Execute;
begin
DoTest;
end;
end.
// Call
private
FTest: TTestThread;
procedure MyTest(Sender: TObject);
procedure TForm1.MyTest(Sender: TObject);
begin
FTest.TestProperty := '
>>> Test2 <<<';
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
FTest := TTestThread.Create(false);
FTest.FreeOnTerminate := false;
FTest.OnTest := MyTest;
FTest.Resume;
Caption := FTest.TestProperty;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
if Assigned(FTest)
then
FTest.Free;
end;
Ich will im Event die Eigenschaft ändern aber es bleibt bei "default".
Wie mache ich das richtig?