1
Samouczek
Builder C++
Sterowanie zegarowe
Krok po kroku
Dr inż.Stanisław Lipski
!
2
Borland Builder 6.0
• Jak utworzyć aplikację zegara?
• Jak wykorzystać Timer do sterowania
aplikacją?
• Krok po kroku!
Wstęp
• Timer pozwala wykonywać określony kod co określony
przedział czasu
• W przeciwieństwie do zegara w systemie, timer jest pod
kontrolą i do dyspozycji programisty
• Timer jest komponentem niewidocznym w aplikacji.
3
Własności
• Właściwość Interval oznacza okres czasu (w milisekundach), który
upływa między kolejnymi zdarzeniami OnTimer (wartością domyślną
jest 1000 = jedna sekunda)
• Wwłaściwość Enabled (bool) określa, czy timer jest włączony (true -
wartość domyślna), czy
• Wyłączony (false); kiedy timer jest wyłączony, nie generuje
zdarzenia OnTimer
4
Krok 1 – projekt aplikacji
5
Formularz projektu naszej aplikacji składać się będzie z dwóch
przycisków Button1 oraz Button2 reprezentujących klasę TButton.
Wykorzystamy też komponent etykietę Label zakładki Standard
oraz Timer z zakładki System.
6
Krok 2
• Umieść na formularzu dwa przyciski z napisami
“Start” i “Stop”.
• Umieść etykietę Label i ustaw jej czcionkę na
Arial, rozmiar 100. Ustal jej kolor.
• W tytule (caption) okna napisz Zegar.
• W celu zbudowania działającego zegara
wykorzystaj komponent TTimer z zakładki System.
• Ustaw dla niego Interval na 1000 (1 sekunda) i
Enabled na false, jeśli chcesz aby po naciśnięciu
przycisku “Start” zegar zaczął pokazywać co
sekunda właściwy czas. Jeśli sam ma się włączać –
ustaw true.
• W tym celu w obsłudze OnClick dla przycisku
“Start” wywołaj pokazanie aktualnego czasu i
włączenie timera, który zadba o właściwe
odświeżanie aplikacji.
Krok 3- kody przycisków
• Start
Timer1->Enabled=true;
Label1->Caption=TimeToStr(Time());
Timer
Label1->Caption=TimeToStr(Time());
Stop
Timer1->Enabled=false;
7
Zapisz, skompiluj i uruchom.
8
Krok 4- wynik
Zadanie 1
• Zaprojektować aplikację sterującą światłami na
skrzyżowaniu
9
Rozwiązanie
10
Panel
Kształty (Tshape)
Uzupełnienie
• Jeśli chcemy, aby zaznaczenie
wskaźnikiem myszy dowolnego kółka
zamknęło aplikację to:
• zaznaczamy kontrolkę shpRed
• trzymając wciśnięty klawisz Shift,
zaznaczamy pozostałe kółka:
shpGreen i shpYellow.
• W funkcji obsługi zdarzenia
OnMouseDown wpisujemy: Close();
11
Budowanie kodu
void __fastcall TForm1::shpRedMouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
Close();
}
•
pozostałe kółka będą miały identyczną funkcję
•
umieszczamy na formularzu timer
•
implementujemy jego funkcję obsługi zdarzenia OnTimer
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
if( shpRed->Brush->Color == clRed )
{Timer1->Interval = 3500;
shpRed->Brush->Color = clSilver;
shpYellow->Brush->Color = clSilver;
shpGreen->Brush->Color = clGreen;}
else if( shpGreen->Brush->Color == clGreen )
{Timer1->Interval = 2000;
shpRed->Brush->Color = clSilver;
shpYellow->Brush->Color = clYellow;
shpGreen->Brush->Color = clSilver;}
12
Budowanie kodu cd.
• else if(shpYellow->Brush->Color == clYellow )
• {Timer1->Interval = 5000;
• shpRed->Brush->Color = clRed;
• shpYellow->Brush->Color = clSilver;
• shpGreen->Brush->Color = clSilver;}
• Zobacz inne przykłady:
http://www.yevol.com/en/bcb/
13
14
Dziękuję za zainteresowanie
• stlipski@gmail.com