Traffic Light

Timer Example: Traffic Light

 

Designing the Application

  1. Start Borland C++ Builder with the default form
  2. Change the Caption of the form to Traffic Light
  3. Change its BorderStyle property to bsDialog
  4. Change its dimensions to Height = 256 and Width = 112
  5. From the Statndard tab of the Component Palette, double-click the Panel control
  6. 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
  7. While the panel is still selected on the form, from the Additional tab of the Component Palette, double-click the Shape control
  8. Change the following properties for the new Shape:
        Brush: Color    = clGray
        Brush: Style    = bsSolid
        Height             = 65
        Left                  = 8
        Top                  = 8
        Width               = 65
  9. On the panel, click the newly added Shape to make sure it is selected. Press Ctrl + C to copy it to the clipboard
  10. Click anywhere on the panel to select it.
  11. Press Ctrl + V to paste the Shape
  12. While the new Shape is still selected, change its Left value to 8 and its Top value to 72
  13. Click an empty area on the panel to select it and press Ctrl + V.
  14. While the new shape is still selected, change its Left value to 8 and its Top value to 136
  15. Click the panel on the form and ress Ctrl + V again
  16. Change the properties of the new shape as follows:
        Brush: Color = clRed
        Height            = 57
        Left                = 8
        Name             = shpRed
        Shape            = stCircle
        Top                = 12
  17. On the form, click the red circle and press Ctrl + C. Then press Ctrl + V to add a new Shape
  18. Change its properties as follows:
        Brush: Color    = clSilver
        Height            = 57
        Left                = 8
        Name               = shpYellow
        Shape                = stCircle
        Top                    = 76
  19. On the form, click the Panel and press Ctrl + V
  20. Change the properties of the new Shape to:
        Brush: Color    = clSilver
        Height            = 57
        Left                = 8
        Name            = shpGreen
        Shape            = stCircle
        Top                = 140
  21. From the System tab of the Component Palette, double-click Timer

Coding the Application

  1. On the Object Inspector, click the Events tab
  2. Although the dialog box will be equipped with the system Close button, we should provide our own meand of closing the application.
    On the form, click the red circle.
  3. Press and hold Shift, then click the other two circles
  4. On the Object Inspector, double-click the empty area on the right side of OnMouseDown
  5. Change the event as follows:
     
    //---------------------------------------------------------------------------
    void __fastcall TForm1::shpGreenMouseDown(TObject *Sender,
          TMouseButton Button, TShiftState Shift, int X, int Y)
    {
        Close();
    }
    //---------------------------------------------------------------------------
  6. Press F12 to display the form.
  7. Double-click the Timer on the form to access its OnTimer event
  8. 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;
        }
    }
    //---------------------------------------------------------------------------
  9. Test your program.

 

 

Copyright 2003 FunctionX, Inc.