Anstatt eines Timers könntest du z.B. eine Funktion "sleep" erstellen:
Delphi-Quellcode:
procedure mysleep(milisecounds:integer);
var
starttime:tdatetime;
begin
starttime:=now;
while now<starttime+milisecounds/24/60/60/1000 do //Solange die Zeitspanne nicht abgelaufen ist
begin
application.processmessages; //Benutzereingaben etc. abarbeiten
if application.terminated then //Falls der Benutzer schon auf BEENDEN geklickt hat,
exit; //dann abbrechen
end;
end;
mit dieser Funktion wird der Ablauf der Prozedur, in der sie aufgerufen wird, für x milisekunden angehalten.
Der Benutzer kann allerdings dennoch Buttonclicks ausüben und zwischendurch andere Funktionen ausführen. Die Genauigkeit dürfte nicht mehr als 0,05 Sekunden abweichen. Is praktisch wie ein Timer. Du musst dann eine Endlosprozedur schreiben:
Delphi-Quellcode:
var
stopped:boolean;
procedure tform1.button1click(sender:tobject);
begin
//Timer abbrechen
stopped:=true;
end;
procedure endlosprozedur;
begin
while not stopped do //Solange STOPPED false ist
begin
[DAS TUN, WAS EIGENTLICH ONTiMER PASSIERT]
if application.terminated then //Falls der Benutzer die Anwendung schon beendet hat,
exit; //dann abbrechen
mysleep(intervall);
end;
end;
procedure tform1.form1create(sender:tobject);
begin
stopped:=false;
ENDLOSPROZEDUR; //Ablauf starten
end;
Michael Enßlin
Ich, der ich weiß, mir einzubilden, dass ich weiß, nichts zu wissen, weiß, dass ich nichts weiß.
Sokrates