Timer  
 
 
 
Príklad 1. - Vykresľovanie útvarov        
Navrhnime jednoduchý program, v ktorom sa bude plocha zapĺňať farebnými obdĺžnikmi náhodnej veľkosti - napr. každú desatinu sekundy v nej pribudne nový obdĺžnik.  Výsledok projektu predstavuje obrázok: 
  
Ako zabezpečiť, aby sa niečo dialo pravidelne bez zásahu používateľa? 
  
 Používa sa na to komponent  Časovač - Timer z palety System, je to neviditeľný komponent, ktorý sa pri kompilácii nezobrazí, ale môžeme sa naň v programe odvolávať - udalosť OnTimer. Časovač si môžeme predstaviť ako hodiny, ktoré s nejakou frekvenciou "tikajú" - pri každom tiknutí môžu vykonať nejakú akciu. 
Frekvenciu "tikania" nastavíme v stavovej premennej Interval, pozastavenie / naštartovanie časovača môžeme urobiť logickou stavovou premennou Enabled - true znamená, že hodiny bežia, false znamená, že sme ich pozastavili.  
  | 
  |  
RIEŠENIE:  Začnime novú aplikáciu, štandardne do nej položme Image, prípadne si zadefinujte skratku na jeho Canvas, projekt uložme. 
  
Položme do formulára komponent Timer, pozrime si jeho Property v Objektovom inšpektore a nastavte Interval na 10. 
  
Dvojkliknime vo formulári na spomínaný komponent a v editovacom okne Unitu zadefinujte príslušné správanie  - vykresľovanie vyplnených obdĺžnikov (príkaz FillRect) na náhodné miesto náhodnej veľkosti náhodnou farbou (funkcie RGB a Random). 
  | 
  |  
  |  
 
  
Príklad 2. - Semafór       
Navrhnime program, ktorý bude zobrazovať fungovanie semafóru.
   
Pri riešení budeme potrebovať kresliť kružnice? 
V minulých aktivitách sme videli vykresľovanie kružníc do Image. Ak však chceme jednoduché tvary ako napr. štvorec, kružnicu..., môžeme použiť aj komponent Shape z palety Additional.     | 
  |  
RIEŠENIE:  Začnime novú aplikáciu, položme do nej jeden Shape, v Objektovom inšpektore mu zmeňme property Shape na Circle. Podobne dajme do formulára ďalšie dva komponenty Shape - komponenty sa dajú aj kopírovať! 
  
Ďalej vložte do formuláru Timer a navrhnite udalosť OnTimer. 
  
Pri vytváraní formulára všetky 3 kruhy vyfarbite na čierno. Potom nech sa zobrazuje fungovanie semafóru - prepínanie farieb - zo zelenej cez oranžovú na červenú a naopak. Nezabudnite ďalšie farby prefarbovať na čierno. 
  
Na vyfarbenie kruhov použite jeho property Brush.Color, ktorú môžete nastaviť v Objektovom inšpektore, ale aj priamo v programe: Shape1.Brush.Color:=clRed; 
  | 
  |  
  |  
| Ďalej navrhnite tlačidlo pre chodcov - SpeedButton z palety Additional, pozrite si jeho property Down. Keď ho niekto zatlačí, dobehne cyklus semafóru na červenú a potom program počká, napr. jednu sekundu a semafór sa znovu rozbehne. Na túto udalosť môžete použiť druhý Timer, ktorý bude spolupracovať s prvým, ktorý je určený pre semafór. Využite property Enabled oboch časovačov. 
 |  
  |  
 
  
Úlohy na riešenie        
| 1. Vytvorte projekt, ktorý spustí prostredníctvom timera vykresľovanie náhodne hrubých čiar na náhodné miesto v odtieňoch červenej, čím získate efektné obrázky. Vykresľovanie ukončite vloženým tlačidlom. 
 |   | 
 
2. Vytvorte projekt, ktorý  bude simulovať pohyby meteoru na povrch Zeme. 
Pri riešení využite telá metód - konštruktora, deštruktora a  udalosti OnTimer časovača...
procedure TForm1.FormCreate(Sender: TObject);
begin
  g:=Image1.Canvas;
  X:=Image1.Width div 2;
  Y:=Image1.Height div 2;
  Pozadie:=TBitmap.Create;
  Pozadie.LoadFromFile('obrazky\Zem.bmp');
  Meteor:=TBitmap.Create;
  Meteor.LoadFromFile('obrazky\Meteor.bmp');
  Meteor.TransparentColor:=clWhite;
  Meteor.Transparent:=True;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
  Meteor.Free;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  g.Draw(0,0,Pozadie);
  g.Draw(X-Meteor.Width div 2,Y-Meteor.Height div 2,Meteor);
  X:=X+4;
  Y:=Y+2;
  if X<0 then X:=X+Image1.Width;
  if X>=Image1.Width then X:=X-Image1.Width;
  if Y<0 then Y:=Y+Image1.Height;
  if Y>=Image1.Height then Y:=Y-Image1.Height;
end;
 | 
  |  
| 3. Vytvorte projekt, ktorý bude zobrazovať na grafickej ploche pohyb guličky, ktorá sa bude vo vhodných časových intervaloch pohybovať po sinusoide. (Guličku nahraďte obrázkom chrobáka, prípadne dokreslite pozadie a načítajte bitmapový obrázok do grafickej plochy.)
 | 
 
 
 
        
 
 |