Eine Procedure von OnTimer Event aufrufen lassen.
Hallo Zusammen,
ich habe eine Unit ohne Form und möchte darin eine Timer haben. Im initialization teil habe ich die Komponente Timer erzeugt. Wie kann ich bitte das event OnTimer nutzen? Es soll die Procedure MyTimerOnTimer aufrufen.
Delphi-Quellcode:
Gruß Kostas
...
procedure MyTimerOnTimer(Sender: TObject); begin MyTimer.Enabled := false; CheckUser; MyTimer.Enabled := true; end; initialization MyTimer := TTimer.Create(Application); MyTimer.Interval := 10000; MyTimer.OnTimer := MyTimerOnTimer; <<< so geht es leider nicht. MyTimer.Enabled := true; finalization MyTimer.Enabled := false; |
Re: Eine Procedure von OnTimer Event aufrufen lassen.
Also am einfachsten ist es, wenn du dir eine Dummy Klasse darum baust:
Delphi-Quellcode:
P.S: ungetestet! Aber als Denkanstoss sollte es reichen.
interface
type class =TDummyClass public class procedure MyTimerOnTimer(Sender: TObejct); end; . . implementation class procedure TDummyClass.MyTimerOnTimer(Sender: TObject); begin MyTimer.Enabled := false; CheckUser; MyTimer.Enabled := true; end; initialization MyTimer := TTimer.Create(Application); MyTimer.Interval := 10000; MyTimer.OnTimer := TDummyClass.MyTimerOnTimer; MyTimer.Enabled := true; P.P.S: Ob aber der überhaupt Timer ohne Fenster funktioniert sei mal dahingestellt ... Einfach mal probieren. |
Re: Eine Procedure von OnTimer Event aufrufen lassen.
Wenn ich mich recht erinnere, dann gibt es in den Klassenproceduren den "versteckten" Parameter Self, welcher die Klasse, oder die Objektreferenz übergibt (jenachdem wie die Prozedur aufgerufen wurde).
z.B.:
Delphi-Quellcode:
procedure MyTimerOnTimer(Self: TClass; Sender: TObject);
procedure MyTimerOnTimer(Self: TObjekt; Sender: TObject); procedure MyTimerOnTimer(Self: Pointer; Sender: TObject); ... |
Re: Eine Procedure von OnTimer Event aufrufen lassen.
Dank erstmal für die Hilfe.
So habe ich es versucht und bekomme die Fehlermeldung: Inkompatible Typen: TNotifyEvent und Procedure. Irgend eine Idee? Gruß Kostas
Delphi-Quellcode:
...
type TDummyClass = class(TObject) public procedure MyTimerOnTimer(Sender: TObject); end; implementation procedure TDummyClass.MyTimerOnTimer(Sender: TObject); begin MyTimer.Enabled := false; CheckUser; MyTimer.Enabled := true; end; initialization MyTimer := TTimer.Create(Application); MyTimer.Interval := 10000; MyTimer.OnTimer := TDummyClass.MyTimerOnTimer; MyTimer.Enabled := true; finalization MyTimer.Enabled := false; end. |
Re: Eine Procedure von OnTimer Event aufrufen lassen.
Zitat:
Gruß Kostas |
Re: Eine Procedure von OnTimer Event aufrufen lassen.
HALT es funkt doch:
Abschrieben sollte man schon können!!!
Delphi-Quellcode:
Tausend Dank, funkt einwandfrei.
type
TDummyClass = class(TObject) public class procedure MyTimerOnTimer(Sender: TObject); end; ... (*--------------------------------------------------------------------*) class procedure TDummyClass.MyTimerOnTimer(Sender: TObject); begin MyTimer.Enabled := false; CheckUser; MyTimer.Enabled := true; end; initialization MyTimer := TTimer.Create(Application); MyTimer.Interval := 10000; MyTimer.OnTimer := TDummyClass.MyTimerOnTimer; MyTimer.Enabled := true; finalization MyTimer.Enabled := false; end. Gruß Kostas |
Re: Eine Procedure von OnTimer Event aufrufen lassen.
[EDIT]
< gelöscht by my self > Irgendwie funktioniert bei mir heute der rote Kasten net wirklich -.- [/EDIT] |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:08 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