Vielen Dank, dass wusste ich noch nicht.
Ich habe die Auslagerung gestern noch mit einer eigenen
Unit gelöst, werde ich nachher posten.
Kurze Frage zu den Events: Sollten diese auch in einer eigenen
Unit definiert werden oder im der Form, in der sie zur Anwendung kommen sollen?
Ich habe mich an den folgenden Links entlanggehangelt:
https://docwiki.embarcadero.com/RADS...nisse_(Delphi)
und bei diesem Thema an Post 2
https://www.delphipraxis.net/70116-e...rammieren.html
Das ist bis jetzt dabei rausgekommen:
Delphi-Quellcode:
type
TTimeEvent = procedure (TimeValue: TTime) of object;
TTimeObject = class
private
FTimeValue: TTimeEvent;
public
property OnGetTime: TTimeEvent read FTimeValue write FTimeValue;
{ Löst das Ereignis aus, wenn etwas registriert ist }
procedure TriggerTimeEvent(TimeValue: TTime);
end;
TForm1 = class(TForm)
lbl_eins: TLabel;
lbl_zwei: TLabel;
...
private
{ Private-Deklarationen }
MyThread: TMyThreads;
...
var
Form1: TForm1;
TimeObject: TTimeObject;
implementation
{$R *.dfm}
{ TTimeObject }
procedure TTimeObject.TriggerTimeEvent(TimeValue: TTime);
begin
if Assigned(FTimeValue) then begin
FTimeValue(TimeValue);
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
MyThread := TMyThreads.Create;
TimeObject := TTimeObject.Create;
TimeObject.OnGetTime := Write_Uhr;
end;
procedure TForm1.FormShow(Sender: TObject);
begin
MyThread.TH_Uhr_Start(False);
end;
In meiner ThreadUnit muss ich jetzt aber irgendwie den Aufruf anstoßen:
Delphi-Quellcode:
{ TMyThread_Uhr }
procedure TMyThread_Uhr.Execute;
var I: integer;
sUhr: integer;
begin
sUhr := 1000;
while not Terminated do begin
sleep(sUhr);
Synchronize(procedure
begin
Form1.Write_Uhr(Now());
end);
end;
end;
Und da weiß ich nicht, wie ich den Bezug zu Form1 loswerde...
Vielen Dank
Patrick