TTimer - OnTimer Event wird nicht ausgeführt
Hallo,
ich habe folgenden Code (in Ausschnitten):
Delphi-Quellcode:
Nun bin ich darauf gestoßen, dass TTImer ja unbedingt ein TComponent übergeben bekommen möchte. Da ich kein solches habe, hab ich einfach mal nil übergeben. Hat nicht funktioniert. Problem ist, das die Methode saveLogList nie aufgerufen wird. Ich dachte mir dass es vlt. genau daran liegt und habe meine Klasse testweise von TComponent abgeleitet und Self an den TTimer Konstruktor übergeben, aber auch da wird das OnTimer-Ereignis nicht ausgelöst. Was kann ich hier falsch gemacht haben?
type
TAgentStatusLogger = class(TObject) private saveTimer: TTimer; public procedure saveLogList(Sender: TObject); constructor Create(LogFile: string); end; implementation constructor TAgentStatusLogger.Create(LogFile: string); begin inherited Create; saveTimer:= TTimer.Create(nil); saveTimer.OnTimer:= saveLogList; saveTimer.Interval:= 20; saveTimer.Enabled:= True; end; procedure TAgentStatusLogger.saveLogList(Sender: TObject); begin ... end; Gruß Marco |
Re: TTimer - OnTimer Event wird nicht ausgeführt
an dem owner, der im konstruktor übergeben wird, sollte es eigentlich nicht liegen. der wird ja erst beim destroy wieder gebraucht. da muss was anderes faul sein.
|
Re: TTimer - OnTimer Event wird nicht ausgeführt
Bei mir geht das ohne Probleme, du must da irgendwas anderes falsch gemacht haben ...
Hier mein Code:
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; TAgentStatusLogger = class(TObject) private saveTimer: TTimer; public procedure saveLogList(Sender: TObject); constructor Create(LogFile: string); end; var Form1: TForm1; implementation {$R *.dfm} constructor TAgentStatusLogger.Create(LogFile: string); begin inherited Create; saveTimer:= TTimer.Create(nil); saveTimer.OnTimer:= saveLogList; saveTimer.Interval:= 20; saveTimer.Enabled:= True; end; procedure TAgentStatusLogger.saveLogList(Sender: TObject); begin Beep; end; procedure TForm1.Button1Click(Sender: TObject); begin TAgentStatusLogger.Create('Hallo'); end; end. |
Re: TTimer - OnTimer Event wird nicht ausgeführt
Zitat:
Aber wo soll die Nachricht hingeschickt werden? ;) Kannst dir da ja mal paar Gedanken drum machen. |
Re: TTimer - OnTimer Event wird nicht ausgeführt
Hi Marco,
Zitat:
Prüfe aber mal, ob der Timer auch erstellt wird, nachdem es ja bei Julius einwandfrei funktioniert. Greetz alcaeus |
Re: TTimer - OnTimer Event wird nicht ausgeführt
Zitat:
Gruß, teebee |
Re: TTimer - OnTimer Event wird nicht ausgeführt
Also ein bisschen näher bin ich dem Problem gerade gekommen.
Julius hat den Timer ja in der gleichen Unit deklariert wie sein Formular. Bei mir war das in einer eigenen Unit. Ich hab testweise den Code in die Hauptunit kopiert und dann wird das ganze auch aufgerufen. Nur ist mir nicht klar, wo da der Unterschied sein soll. In beiden Fällen sind es ja immer noch getrennte Klassen. Habt ihr irgendwelche Ideen? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:22 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz