☰ Mundarija · Informatika

Timer obyekti

Darslar 61–62 · 2 ta dars · N. I. Taylaqov (umumiy muharrir), A. B. Axmedov, M. D. Pardayeva, A. A. Abdug‘aniyev, U. M. Mirsanov. Informatika va axborot texnologiyalari, 10-sinf, 1-nashr. «Extremum-Press», Toshkent, 2017
61

Timer obyekti va undan foydalanish

Darslik: 138–143-betlar
MaqsadTimer obyektining Interval va Enabled xossalarini va OnTimer hodisasini ishlatadi: elektron soat, teskari sanoq va to‘xtatib-yoqish tugmasini yaratadi.
Yangi so‘zlar
Timer · Timer: an invisible object that triggers an event at regular intervalsInterval · Interval: the time between two timer events, in millisecondsOnTimer · OnTimer: the event that runs each time the interval passesmillisekund · millisecond: one thousandth of a second
Tushuntirish

Vaqtga bog‘liq ishlar – soat, teskari sanoq, animatsiya – uchun Timer (System yorlig‘i) ishlatiladi. U ilova oynasida ko‘rinmaydi, lekin faol bo‘lsa, belgilangan vaqt o‘tgach OnTimer hodisasini ishga tushiradi, protsedura bajariladi va ilova ishini davom ettiradi. Timer ning ikkita xossasi bor: Enabled (True bo‘lsa ishlaydi, False bo‘lsa to‘xtaydi; boshida True) va Interval – hodisalar orasidagi vaqt millisekundlarda (boshida 1000, ya’ni 1 sekund). 1 sekund = 1000 millisekund, shuning uchun sekundiga 20 marta ishlashi uchun Interval = 1000 / 20 = 50. Soat uchun Label1.Caption := TimeToStr(Now); yoziladi: Now – kompyuter soatining hozirgi vaqti, TimeToStr esa uni matnga aylantiradi. Teskari sanoq uchun global o‘zgaruvchi kerak, chunki qiymat OnTimer ning bir ishlashidan ikkinchisigacha saqlanishi lozim; unga Left, Top, Width, Caption kabi xossa nomini bermang, aks holda forma protsedurasida bu nom formaning o‘z xossasini bildiradi. Timer intervali aniq emas: Windows uni biroz kechiktirishi mumkin, shuning uchun aniq vaqt kerak bo‘lsa, sanab borish o‘rniga Now dan foydalaning.

Namunalar
Soat: Label1 (Font.Size = 36), Timer1 (Interval = 1000). procedure TForm1.Timer1Timer(Sender: TObject); ⏎ begin ⏎  Label1.Caption := TimeToStr(Now); ⏎ end; Har sekundda yozuv yangilanadi, masalan 09:15:07 dan 09:15:08 ga.
Teskari sanoq (poyga boshlanishi): global var qoldi: Integer; Tayyor tugmasi: qoldi := 10; Timer1.Enabled := True; Timer1 (Interval = 1000): procedure TForm1.Timer1Timer(Sender: TObject); ⏎ begin ⏎  qoldi := qoldi - 1; ⏎  if qoldi > 0 then ⏎    Label1.Caption := IntToStr(qoldi) ⏎  else ⏎  begin ⏎    Label1.Caption := 'Start!'; ⏎    Timer1.Enabled := False; ⏎  end; ⏎ end; Label 9, 8, …, 1 ni ko‘rsatadi, so‘ng Start! yoziladi. Interval = 1000 da 10 soniya, Interval = 500 da esa 10·500 ms = 5 soniya ketadi.
Sinfda faoliyat

«Sanoq»: juftlik 20 soniyalik teskari sanoq ilovasini yaratadi, «To‘xtat/Davom» tugmasini (Enabled := not Enabled) qo‘shadi va Interval ni o‘zgartirib, sanoq vaqti qanday o‘zgarishini oldindan hisoblaydi.

Mashq
1
Timer ning Interval xossasi qaysi birlikda o‘lchanadi?
2
Interval = 250 bo‘lsa, Timer 1 sekundda necha marta ishlaydi?
3
Teskari sanoq 45 dan, Interval = 1000. Necha soniyada 0 ga yetadi?
4
Nima uchun teskari sanoq qiymati global o‘zgaruvchida saqlanadi?