Hallo, als Lazarus-Neuling (reichlich Erfahrung mit Delphi ist vorhanden) würde mich mal der Unterschied zwischen TTimer und TIdleTimer interessieren. Hab auch nach längerem Suchen keine Infos finden können.
Hab schon länger kein Delphi mehr benutzt und auch keine installierte Version von Delphi griffbereit. Im C++Builder6 von Borland gibt es nur den TTImer, nicht den TIdleTimer.
Gruß
Jacques
Unterschied zwischen TTimer und TIdleTimer
-
- Beiträge: 6079
- Registriert: Do 21. Sep 2006, 07:51
- OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
- CPU-Target: AVR,ARM,x86(-64)
- Wohnort: Dessau
- Kontaktdaten:
Sagt doch der name schon, idle timer ist nur altiv wenn die Applikation nichts zu tun hat. Wobei TTimer auch nur altiv ist wenn Narichten verarbeitet werden können also wenn die Applikation richtig rechnet ohne das ein Application.Processmessages drin steht ist auch TTimer nicht aktiv.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/
-
- Lazarusforum e. V.
- Beiträge: 2808
- Registriert: Fr 22. Sep 2006, 10:38
- OS, Lazarus, FPC: Lazarus v2.0.10, FPC 3.2.0
- Wohnort: Hessen
- Kontaktdaten:
http://lazarus-ccr.sourceforge.net/docs ... timer.html" onclick="window.open(this.href);return false;
http://lazarus-ccr.sourceforge.net/docs ... timer.html" onclick="window.open(this.href);return false;
Hier steht zu TIdleTimer:
http://lazarus-ccr.sourceforge.net/docs ... timer.html" onclick="window.open(this.href);return false;
Hier steht zu TIdleTimer:
Idle Timer: A timer to measure idle time between processes
-
- Beiträge: 758
- Registriert: Di 23. Aug 2016, 14:25
- OS, Lazarus, FPC: Windows 11
- CPU-Target: 64Bit
- Wohnort: Berlin
Re: Unterschied zwischen TTimer und TIdleTimer
Kleines Beispiel:
Erstelle ein neues Projekt und setze lediglich den IdleTimer aufs Formular und stelle AutoEnabled auf TRUE.
Beim Ereignis OnTimer kommt folgender Code rein.
Starte die Anwendung.
Wenn Du nichts macht, dann läuft der Zähler nun hoch, da das System Idle ist.
Der Zählerstand wird in der Titelleiste ausgegeben.
Wenn Du aber mit der Maus über das Formular "kreist" (also ständig bewegst), dann bleibt der Zähler stehen,
da die Anwendung etwas zu tun hat.
Lässt Du die Maus wieder in Ruhe, läuft der Zähler wieder los, das System ist IDLE
Wichtig dabei ist, dass AutoEnabled auf TRUE steht, nur dann ist es ein "IdleTimer".
Wenn AutoEnabled auf False steht, läuft der Timer IMMER, unabhängig davon ob das System IDLE ist oder nicht.
Das entspricht dann dem Verhalten von TTimer
Erstelle ein neues Projekt und setze lediglich den IdleTimer aufs Formular und stelle AutoEnabled auf TRUE.
Beim Ereignis OnTimer kommt folgender Code rein.
Code: Alles auswählen
var count:integer;
procedure TForm1.IdleTimer1Timer(Sender: TObject);
begin
inc(count);
caption:=IntToStr(count);
end;
Wenn Du nichts macht, dann läuft der Zähler nun hoch, da das System Idle ist.
Der Zählerstand wird in der Titelleiste ausgegeben.
Wenn Du aber mit der Maus über das Formular "kreist" (also ständig bewegst), dann bleibt der Zähler stehen,
da die Anwendung etwas zu tun hat.
Lässt Du die Maus wieder in Ruhe, läuft der Zähler wieder los, das System ist IDLE
Wichtig dabei ist, dass AutoEnabled auf TRUE steht, nur dann ist es ein "IdleTimer".
Wenn AutoEnabled auf False steht, läuft der Timer IMMER, unabhängig davon ob das System IDLE ist oder nicht.
Das entspricht dann dem Verhalten von TTimer
Grüße von Siro
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...