![]() |
TTimer nicht in einem Form sondern in einem eigenen Objekt
Hallo,
Ich möchte in ein Objekt eine Timerfunktion einbauen, die nach einiger Zeit eine Funktion des Objektes ausführt. Jedoch habe ich keine TComponente die ich den Constructor übergeben kann. Nach meinem Verständnis müßte die Componente das Objekt selber sein, damit ich die Methoden dieses Objektes ausführen kann.
Delphi-Quellcode:
so sieht das Objekt aus.
ObjBombeFeld = Class(objFeld)
constructor Mutieren(AltesFeld: ObjFeld; Bild: String); override; procedure Bombe; Override; procedure Zuendung; {private Timer: TTimer; end;} end; Kann mir jemand helfen? Vielen Dank, Alexander [edit=Daniel B]Delphi-Tags eingefügt. Mfg, Daniel B[/edit] |
Re: TTimer nicht in einem Form sondern in einem eigenen Obje
Verusuch einfach der Create-methode des Timers "Application" zu übergeben
|
Re: TTimer nicht in einem Form sondern in einem eigenen Obje
Jetzt habe ich es hinbekommen. Ich habe das Objekt einfach von der Classe TComponent abgeleitet.
Aber jetzt habe ich das Problem, das Der Timer garnicht das Delay durchführt, sondern die Funktion gleich ausführt. Wo liegt mein Fehler?
Delphi-Quellcode:
Danke,
procedure ObjBombeFeld.Zuendung;
var Timer: TTimer; begin Timer:= TTimer.Create(self); Timer.Interval := 2000; Timer.OnTimer := Bombe(self); Timer.Destroy; end; Alexander [edit=Daniel B]Delphi-Tags korrigiert. Mfg, Daniel B[/edit] |
Re: TTimer nicht in einem Form sondern in einem eigenen Obje
funktioniert
Zitat:
Das die funktion sofort ausgeführt wird liegt vielleicht daran (dachte der compiler bringt bei sowas nen fehler aber hängt vermutlich von der Delphi version ab). Standardmäßig ist der Timer aber auch auf enabled und übernimmt den intervalwert erst nach dem enabled neu gesetzt wird. |
Re: TTimer nicht in einem Form sondern in einem eigenen Obje
Hmm, da hattest Du recht. Jetzt klappt es.
Aber der letzte schritt fehlt mir jetzt noch. Was mache ich wenn ich der Funktion die der Timer ausführt noch weitere Parameter übergeben will? Wenn die Liste der Parameter der Funktion einfach erweitere, dann bekomme ich einen Fehler. Vielen Dank, Alexander |
Re: TTimer nicht in einem Form sondern in einem eigenen Obje
Hallo,
dazu müsstest du wohl deine eigene Timer Komponente erstellen und die von TTimer ableiten. Dann einen eigenen Ereignistyp definieren, der deinen Vorstellungen entspricht. |
Re: TTimer nicht in einem Form sondern in einem eigenen Obje
noch einfacher ist's, wenn man seinen Timer dafür dann einfach eine andere Procedure aufrufen lässt. Und zwar eine, die jetzt selbst wieder nur diese eigentliche Ziel-Funktion aufzurufen hat, dieses jedoch nun auch mit jeder beliebigen Parameterkonstellation tun kann.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:04 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz