![]() |
TimerEvent zur Laufzeit festlegen
Ich möchte zur Laufzeit eine Timerkomponente erzeugen. Das ist über
Delphi-Quellcode:
usw. kein Problem. Nun möchte ich dem Timer Event "OnTimer" aber etwas zuweisen. D.h. der Timer soll immer nach Ablauf des Intervals einen bestimmten Algorithmus ausführen. Wie mache ich das, der Timer wird ja erst zur Laufzeit erzeugt...?
Timer:=TTImer.Create;
Timer.Interval:=1000; Timer.Enabled:=true; |
Re: TimerEvent zur Laufzeit festlegen
du musst irgendwo schon den event haben. das sollte eine TNotify-Prozedur sein, also "procedure bla(Sender: TObject);".
Die kannst du dann per "Timer.OnTimer := bla;" zuweisen. |
AW: TimerEvent zur Laufzeit festlegen
Sag ma wieso klappt das bei mir nicht?
Delphi-Quellcode:
private
{ private declarations } procedure ShowNowTime(Sender: TObject); public { public declarations } end; var Form1: TForm1; myTimer: TTimer; implementation {$R *.lfm} { TForm1 } procedure TForm1.ShowNowTime(Sender: TObject); begin Label1.Caption := DatetimeToStr(Now); end; procedure TForm1.Button1Click(Sender: TObject); begin myTimer := TTimer.Create(Self); myTimer.Enabled := False; myTimer.Interval := 1000; myTimer.OnTimer := ShowNowTime; // <- Error: Wrong number of parameters specified for call to "ShowNowTime" myTimer.Enabled := True; end; |
AW: TimerEvent zur Laufzeit festlegen
Delphi-Quellcode:
Du willst ja eine Methode zuweisen und keinen Aufruf derselben.
myTimer.OnTimer := ShowNowTime;
|
AW: TimerEvent zur Laufzeit festlegen
Ist das Delphi oder Lazarus?
|
AW: TimerEvent zur Laufzeit festlegen
Zitat:
Und wie rufe ich eine Methode ab? Ist für Delphi und Lazarus, jetzt konkret aber erstmal für Lazarus. :) Also ich möchte diese Procudure laufen lassen:
Delphi-Quellcode:
procedure TForm1.ShowNowTime(Sender: TObject);
begin Label1.Caption := DatetimeToStr(Now); end; |
AW: TimerEvent zur Laufzeit festlegen
Unter Delphi sollte es aber so funktionieren, unter Lazarus musst Du entweder den Modus von FPC auf Delphi ändern oder es AFAIK etwas anders formulieren:
Delphi-Quellcode:
myTimer.OnTimer := @ShowNowTime;
|
AW: TimerEvent zur Laufzeit festlegen
Zitat:
|
AW: TimerEvent zur Laufzeit festlegen
Vielleicht solltest du langsam dein Profil ändern? (Lazarus steht auch zur Auswahl) :stupid: (leider kann man nicht Mehreres angeben)
Delphi referenziert/dereferenziert halt eine Typen automatisch, wenn es erkennt daß würde passen. Lazarus FreePascal ist da "standardmäßig" halt etwas strikter. Aber auch Delphi sollte es mit @ versehen. Und warum ist myTimer global? |
AW: TimerEvent zur Laufzeit festlegen
Zitat:
|
AW: TimerEvent zur Laufzeit festlegen
Ja ja ich weiß schon... das ist nur ein Testprojekt. Mir gings nur ums Verständnis.
|
AW: TimerEvent zur Laufzeit festlegen
auch wenn etwas spät...
Vielleicht ist der Button1 ja ein "ErstelleNeuenTimer"-Button? :stupid: (die Caption kann man hier ja nicht erkennen) |
AW: TimerEvent zur Laufzeit festlegen
Zitat:
|
AW: TimerEvent zur Laufzeit festlegen
Ich würde hierfür aber nur einen Timer verwenden, der in einem Zeitraster auf Ablauf der einzelnen Termine prüft.
|
AW: TimerEvent zur Laufzeit festlegen
Zitat:
|
AW: TimerEvent zur Laufzeit festlegen
Und du meinst, dass das System, dann durch mehrere Timer flüssiger läuft?
Ich ging auch von einem gröberen Zeitraster aus. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:42 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