Timer pausieren
-
Mir ist aufgefallen, dass ERST die Anweisung bei einem Timer (bei seinem ersten Start) ausgeführt werden und danach erst alle z.B. 1000ms wieder von vorn anfängt.
Ich möchte das aber so haben, dass wenn man dern Timer aktiviert, er ERST 1000ms wartet, auch bei seinem ersten Start.
-
Ich glaube, da ist dir was falsch aufgefallen.
Nach dem Setzen von Enabled = true vergeht die in Interval spezifizierte Zeit, bevor das OnTimer-Event zum ersten Mal ausgelöst wird.
-
Bei mir ist es anders. Ich habs extra getestet.
void __fastcall TForm1::Timer1Timer(TObject *Sender) { Timer1->Interval = 5000; keybd_event(65, 0, 0, NULL); keybd_event(65, 0, KEYEVENTF_KEYUP, 0); keybd_event(13, 0, 0, NULL); keybd_event(VK_CONTROL, 0, 0, NULL); keybd_event(13, 0, KEYEVENTF_KEYUP, 0); keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0); }Hier müsste das Programm nach 5 sek. das "a" schreiben, aber es wird sofort geschrieben! Deshalb gehe ich davon aus, dass wohl irgendwie erst alles asugeführt wird....
hm
-
Dir ist nicht klar, wie die TTimer-Komponente funktioniert.
Du musst das Interval natürlich nicht im OnTimer-Event setzen, sondern entweder im Objektinspektor
oder an einer geeigneten Stelle im Code, z.B. in FormShow-Ereignisbehandlungsroutine.Gruß,
Alexander
-
Tatsächlich, vielen Dank!

-
das ist aber grundsätzlich so. source code wird ja zeile für zeile ausgeführt. insofern wird ja hier dem timer neu der wert 5000 zugewiesen, die nachfolgenden zeilen werden dann aber trotzdem erst ausgeführt. sowas ist ja in C++ und anderen programmiersprachen(?) stehts der fall.
-
Ja, ich dachte, der Timer wird dann auf 5000 ms gestellt und zählt dann runter und führt dann erst die nächsten Zeilen aus.