![]() |
Zur Laufzeit erstellter Timer
Hi
wie kann ich einem zur Laufzeit erstellten Timer ein onTimer Ereignis zuweisen? das Problem hierbei ist nicht der Aufruf (den weiss ich mittlerweile), sondern, dass ich das OnTimer Ereignis aus einer Prozedur zuweisen will...
Delphi-Quellcode:
unit Unit2;
interface uses Forms, ExtCtrls,Unit1; procedure moin(); procedure MyTimerEvent(Sender: TObject); implementation procedure moin(); var MyTimer: TTimer; begin MyTimer := TTimer.Create(application); MyTimer.Enabled := True; MyTimer.Interval := 1000; MyTimer.OnTimer := MyTimerEvent; end; procedure MyTimerEvent(Sender: TObject); begin form1.Caption := TimeToStr(Time); end; end. |
Re: Zur Laufzeit erstellter Timer
Was meinst du mit "das OnTimer Ereignis aus einer Prozedur zuweisen " ??
|
Re: Zur Laufzeit erstellter Timer
Schau mal da nach:
![]() oder du schachtelst deine Prozedur in eine Klasse, dazu gab es auch vor kurzen einen Beitrag, hab aber keine Ahnung wo. http://www.delphipraxis.net/images/common/divider.jpg ![]() ![]() ![]() |
Re: Zur Laufzeit erstellter Timer
wenn ich den aufruf aus einer Tobject procedur mache, dann funktioniert das ganze...
das heisst mit einem Button geht es |
Re: Zur Laufzeit erstellter Timer
hi,
So läufts bei mir:
Delphi-Quellcode:
Der Unterschied zu deinem ist, dass die Procedure MyTimerEvent zu TForm1 gehört.
type
TForm1 = class(TForm) Label1: TLabel; procedure FormCreate(Sender: TObject); private timer : TTimer; public procedure MyTimerEvent(Sender: TObject); end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin timer := TTimer.Create(Self); timer.OnTimer := MyTimerEvent; timer.Interval := 1000; timer.Enabled := true; end; procedure TForm1.MyTimerEvent(Sender: TObject); begin Form1.Label1.Caption := TimeToStr(Now); end; |
Re: Zur Laufzeit erstellter Timer
Und genau dort liegt ja mein Problem, ich habe den code in einer Unit ohne form...Und ich schnall einfach nicht was ich machen muss, damit das ganze trotzdem geht
|
Re: Zur Laufzeit erstellter Timer
Ich halte es mal für möglich, dass es ein Fenster geben muss, damit die Timer-Messages ankommen können. Du kannst ja nen Timer auf das Hauptform setzen (wenns eins gibt) und dort eine Prozedur deiner Klasse aufrufen.
|
Re: Zur Laufzeit erstellter Timer
Kuck mal hier:
![]() |
Re: Zur Laufzeit erstellter Timer
Ach egal, ich lös das Problem irgendwie anders
danke dir trotzdem |
Re: Zur Laufzeit erstellter Timer
Ein Hallöle von
![]()
Delphi-Quellcode:
(nicht getestte, aber so in etwa)
Unit Unit2;
Interface Uses Forms, ExtCtrls, Unit1; Procedure moin(); Implementation Type TTimerClass = Class MyTimer: TTimer; Procedure MyTimerEvent(Sender: TObject); End; Var TimerClass: TTimerClass; Procedure moin(); Var MyTimer: TTimer; Begin TimerClass.MyTimer := TTimer.Create(application); TimerClass.MyTimer.Interval := 1000; TimerClass.MyTimer.OnTimer := TimerClass.MyTimerEvent; TimerClass.MyTimer.Enabled := True; End; Procedure TTimerClass.MyTimerEvent(Sender: TObject); Begin Form1.Caption := TimeToStr(Time); End; End. [add] ![]() http://www.delphipraxis.net/images/common/divider.jpg ![]() ![]() ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:29 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 by Thomas Breitkreuz