Einzelnen Beitrag anzeigen

HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
961 Beiträge
 
Delphi 6 Professional
 
#32

AW: Timer in einer Unit

  Alt 21. Mär 2015, 13:39
Hi.hi..


Nur ne kleine Anmerkung:

SetTimer( 0, nIDEvent, Interval, @OnTimer );

benötigt eine nIDEvent > 0 !!

Also hier einfach

SetTimer( 0, 1, Interval, @OnTimer );

Da mit dieser Minimalroutine eh nur ein Teimer erzeugt werden kann

Hier mal ein Minimalst-Beispiel, was auch komplett auf ein Handle verzichtet
Delphi-Quellcode:
unit Unit1;

interface

uses
  {Winapi.}Windows;

// Startet den Timer oder
// setzt ein neues Intervall für einen aktiven Timer
procedure TimerStart( Interval: UINT );
// Stoppt den Timer
procedure TimerStop;

implementation

var
  nIDEvent: UINT_PTR = 0; // Beim Start kein Timer, also nIDEvent = 0

procedure OnTimer;
begin
  // hier irgendwas machen
end;

procedure TimerStop;
begin
  if KillTimer( 0, nIDEvent )
  then
    nIDEvent := 0; // Wenn der Timer entfernt werden konnte, dann nIDEvent wieder auf 0 setzen
end;

procedure TimerStart( Interval: UINT );
begin
  nIDEvent := SetTimer( 0, nIDEvent, Interval, @OnTimer );
end;

end.
  Mit Zitat antworten Zitat