Practical
Learning: Introducing the Timer Control
|
|
- Start a new application with the default form
- Save it in a new folder named TrafficLight1
- Save the unit as Exercise and save the project as TrafficLight
- Change the Caption of the form to Traffic Light
- Change its BorderStyle property to bsDialog
- Change its dimensions to Height = 256 and Width = 112
- From the Statndard tab of the Component Palette, double-click the Panel control
- Change the properties of the panel as follows:
BevelInner = bvNone
BevelOuter = bvLowered
BevelWidth = 5
Caption = Empty
Color = clBlack
Height = 209
Left = 17
Top = 8
Width = 81
- While the panel is still selected on the form, from the Additional tab of the Component Palette, double-click the Shape control
- Change the following properties for the new Shape:
Brush: Color = clGray
Brush: Style = bsSolid
Height = 65
Left = 8
Top = 8
Width = 65
- On the panel, click the newly added Shape to make sure it is selected. Press Ctrl + C to copy it to the clipboard
- Click anywhere on the panel to select it
- Press Ctrl + V to paste the Shape
- While the new Shape is still selected, change its Left value to 8 and its Top value to 72
- Click an empty area on the panel to select it and press Ctrl + V
- While the new shape is still selected, change its Left value to 8 and its Top value to 136
- Click the panel on the form and ress Ctrl + V again
- Change the properties of the new shape as follows:
Brush: Color = clRed
Height = 57
Left = 8
Name = shpRed
Shape = stCircle
Top = 12
- On the form, click the red circle and press Ctrl + C. Then press Ctrl + V to add a new Shape
- Change its properties as follows:
Brush: Color = clSilver
Height = 57
Left = 8
Name = shpYellow
Shape = stCircle
Top = 76
- On the form, click the Panel and press Ctrl + V
- Change the properties of the new Shape to:
Brush: Color = clSilver
Height = 57
Left = 8
Name = shpGreen
Shape = stCircle
Top = 140
- Save All
Characteristics of a Timer |
|
The timer in VCL applications is made available through the TTimer class. To add it to your application at design time, from the System property page of the Component Palette, click Timer
and click on the form.
The Timer control has two properties that are particularly important for its functionality. A timer is an object used to count lapses of time and send a message when it has finished counting. The amount of time allocated for counting is called an interval. The
Interval is probably the most important characteristic of the Timer control because it measures and controls the total time needed to perform a complete count. The
Interval is measured in milliseconds. Like any counter, the lower the value, the faster the count will finish, and the higher the value, the longer the count (if you ask one kid to count from 1 to 10 and you ask another to count from 1 to 20 and shout when finished, the first kid would finish first and would shout first). The amount of interval you specify will depend on what you are trying to do.
One of the uses you can make of a Timer control is to decide when it should start counting. In some applications, you may want the control to work full-time while in some other applications, you may want the control to work only in response to an intermediate event. The ability to stop and start a Timer control is set using the
Enabled Boolean property. When, or as soon as, this property is set to true, the control starts counting. If, when, or as soon as, the
Enabled property is set to false, the control stops and resets its counter to 0.
Practical
Learning: Using Timer Controls
|
|
- From the System tab of the Component Palette, double-click Timer
- On the Object Inspector, click the Events tab
- Although the dialog box will be equipped with the system Close button, we should provide our own mean of closing the
application
- On the form, click the red circle
- Press and hold Shift, then click the other two circles
- On the Object Inspector, double-click the empty area on the right side of OnMouseDown
- Change the event as follows:
//---------------------------------------------------------------------------
void __fastcall TForm1::shpGreenMouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
Close();
}
//---------------------------------------------------------------------------
|
- Press F12 to display the form
- Double-click the Timer on the form to access its OnTimer event
- Change its code as follows:
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
// If the current color is red
if( shpRed->Brush->Color == clRed )
{
// Change the color to green
Timer1->Interval = 3500;
shpRed->Brush->Color = clSilver;
shpYellow->Brush->Color = clSilver;
shpGreen->Brush->Color = clGreen;
}
// But if the color is green
else if( shpGreen->Brush->Color == clGreen )
{
// Change the color to yellow
Timer1->Interval = 2000;
shpRed->Brush->Color = clSilver;
shpYellow->Brush->Color = clYellow;
shpGreen->Brush->Color = clSilver;
}
// Otherwise, if the color is yellow
else // if(shpYellow->Brush->Color == clYellow
{
// Change the color to red
Timer1->Interval = 5000;
shpRed->Brush->Color = clRed;
shpYellow->Brush->Color = clSilver;
shpGreen->Brush->Color = clSilver;
}
}
//---------------------------------------------------------------------------
|
- Test your program
- Close it and return to Bcb
- Save All
|
|