Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Timer zur Laufzeit erzeugen
grisu81 - Mi 23.07.03 19:17
Titel: Timer zur Laufzeit erzeugen
Hallo zusammen.
Ich bin ncoh ein ziemlicher Delphi-Anfänger und habe folgende Frage: Ich möchte in meinem Programm Timer zur Laufzeit erschaffen. Die Anzahl ist jeweils von den Benutzeraktionen abhängig.
Wie erzeuge ich die Timer mit von mir vorgegebenen Namen am besten und wo "speichere" ich sie? In einer Liste etc.?
Und wie weise ich diesen Timer zu, was sie ausführen sollen, wenn das OnTimer-Ereignsi eintritt?
Danke für Eure Hilfe!
Gruss
grisu81
Tino - Do 24.07.03 09:46
Hallo!
eine Komponente kannst du wie folgt dynamisch zur Laufzeit erstellen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| Var NewTimer: TTimer; Begin NewTimer := TTimer.Create (Nil); NewTimer.Interval := 1000; NewTimer.Enabled := True; NewTimer.OnTimer := DoTimer; End; |
DoTimer ist eine Procedure die aufgerufen wird wenn der festgelegte Zeitabschnitt verstrichen ist.
Da du ja mehrere Timer hast könntest du diese in ein TList-Objekt verwalten. Dazu erstellst du ganz am Anfang (z. b. im OnCreate Event der Form) die TList:
Wenn du dann einen neuen Timer erstellst dann fügst du den Pointer auf die Instance in die Liste hinzu:
Beim Beenden der Anwendung musst du aber die Timer wieder freigeben (z. B. im OnDestroy Event);
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| Var Idx: Integer; Begin For Idx := fList.Count -1 DownTo 0 Do TTimer (fList [Idx]).Free; End; |
Gruß
Tino
grisu81 - Do 24.07.03 10:22
Herzlichen Dank!
Tino - Do 24.07.03 11:21
| grisu81 hat folgendes geschrieben: |
| Herzlichen Dank! |
Gerne :-D
grisu81 - Do 24.07.03 12:48
Für mich tut sich da gerade ein Problem auf:
Ich erstelle die Prozedur DoTimer;
Delphi-Quelltext
1: 2: 3: 4:
| procedure DoTimer(Sender: TObject); begin
end; |
Bei dieser Zuweisung
Delphi-Quelltext
1:
| NewTimer.OnTimer := DoTimer; |
erhalte ich dann aber beim Compilieren die Meldung
| Delphi hat folgendes geschrieben: |
| Inkompatible Typen: Methodenzeiger und reguläre Prozedur |
Woran kann das liegen?
Gruss
grisu81
Moderiert von
Tino: Delphi-Tags hinzugefügt.
Tino - Do 24.07.03 13:03
Hallo!
Das liegt daran das das Ereignis
OnTimer eine Methode erwartet und keine normale Procedure.
Der Unterschied ist der das eine Methode in einer Klasse definiert ist. Also zum Beispiel Bestandteil der Form Klasse:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| type TForm1 = Class (TForm); private Procedure DoTimer (aSender: TObject); End;
procedure Form1.DoTimer(Sender: TObject); begin end; |
Dann sollte es funktionieren.
Gruß
Tino
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!