Unterschied zwischen TTimer und TIdleTimer

Rund um die LCL und andere Komponenten
Antworten
Jacques
Beiträge: 17
Registriert: Do 24. Mai 2007, 16:50
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Kontaktdaten:

Unterschied zwischen TTimer und TIdleTimer

Beitrag von Jacques »

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

Christian
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:

Beitrag von Christian »

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/

Euklid
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:

Beitrag von Euklid »

http://lazarus-ccr.sourceforge.net/docs ... timer.html
http://lazarus-ccr.sourceforge.net/docs ... timer.html

Hier steht zu TIdleTimer:
Idle Timer: A timer to measure idle time between processes

siro
Beiträge: 732
Registriert: Di 23. Aug 2016, 14:25
OS, Lazarus, FPC: Windows 11
CPU-Target: 64Bit
Wohnort: Berlin

Re: Unterschied zwischen TTimer und TIdleTimer

Beitrag von siro »

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.

Code: Alles auswählen

var count:integer;

procedure TForm1.IdleTimer1Timer(Sender: TObject);
begin
  inc(count);
  caption:=IntToStr(count);
end;                            
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
project1.zip
(105.39 KiB) 99-mal heruntergeladen
Grüße von Siro
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...

Antworten