Написание программы визуального отображения состояния кабины лифта (стоит или движется), страница 3

}

//---------------------------------------------------------------------------

void __fastcall TMainForm::Timer1Timer(TObject *Sender)

{

   //Читаем сообщения с лифтов

    for(int i = 0; i != LIFT_COUNT; i++)

    {

      switch(i)

      {

          case 0:  St1->Caption = pMessToContr[i]+1;    break;

          case 1:  St2->Caption = pMessToContr[i]+1;    break;

          case 2:  St3->Caption = pMessToContr[i]+1;    break;

          case 3:  St4->Caption = pMessToContr[i]+1;    break;

      };

    }

}

//---------------------------------------------------------------------------

void __fastcall TMainForm::Button2Click(TObject *Sender)

{

    AboutForm->ShowModal();   

}

//---------------------------------------------------------------------------

Листинг файла заголовочного файла программы-лифта:

//---------------------------------------------------------------------------

#ifndef MainUnitH

#define MainUnitH

//---------------------------------------------------------------------------

#include <Classes.hpp>

#include <Controls.hpp>

#include <StdCtrls.hpp>

#include <Forms.hpp>

#include <Buttons.hpp>

#include <ExtCtrls.hpp>

#include <ImgList.hpp>

#include <jpeg.hpp>

//---------------------------------------------------------------------------

class TMainForm : public TForm

{

__published:         // IDE-managed Components

        TButton *Start;

        TTimer *MoveTimer;

        TPanel *DoorPanel1;

        TPanel *DoorPanel2;

        TTimer *DoorTimer;

        TLabel *Label2;

        TPanel *Bt9;

        TPanel *Bt8;

        TPanel *Bt7;

        TPanel *Bt6;

        TPanel *Bt5;

        TPanel *Bt4;

        TPanel *Bt3;

        TPanel *Bt2;

        TPanel *Bt1;

        TPanel *Panel1;

        TPanel *Panel2;

        TLabel *Label1;

        TImage *Image1;

        TImage *Up;

        TImage *Down;

        TImage *Image4;

        TImage *Image5;

        void __fastcall MoveTimerTimer(TObject *Sender);

        void __fastcall StartClick(TObject *Sender);

        void __fastcall DoorTimerTimer(TObject *Sender);

        void __fastcall FormCreate(TObject *Sender);

        void __fastcall FormClose(TObject *Sender, TCloseAction &Action);

        void __fastcall Bt9Click(TObject *Sender);

        void __fastcall Bt1Click(TObject *Sender);

        void __fastcall Bt8Click(TObject *Sender);

        void __fastcall Bt7Click(TObject *Sender);

        void __fastcall Bt6Click(TObject *Sender);

        void __fastcall Bt5Click(TObject *Sender);

        void __fastcall Bt4Click(TObject *Sender);

        void __fastcall Bt3Click(TObject *Sender);

        void __fastcall Bt2Click(TObject *Sender);

private:     // User declarations

        void __fastcall ClearColor(int Stage, TColor Cvet);

public:                  // User declarations

        __fastcall TMainForm(TComponent* Owner);

};

//---------------------------------------------------------------------------

extern PACKAGE TMainForm *MainForm;

//---------------------------------------------------------------------------

#endif

Листинг файла MainUnit.cpp программы-лифта:

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

#define LIFT_COUNT 4

int SelectedStage; //Этаж на который необходимо переместится

int CurrentStage = 0; //Этаж на котором лифт стоит в данный момент

int n = 0; //Этаж вдоль которого в данный момент проезжает лифт

bool where; //Флаг - указатель - куда едем

bool open_flag; //Флаг - указывает закрывать или открывать двери

int s; //Расстояние "в этажах" которое должен проехать лифт

int open_s = 0; //Счётчик - для анимации "открывания" дверей лифта

int PROGNUM;    //Номер лифта

int HOUSE[LIFT_COUNT]; //Массив "дом" - 4 целых числа - номера этажей

int* pMessToContr;   //Сообщение (массив) для программы контроля

HANDLE hFileMapMassiv = NULL;

#include "MainUnit.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TMainForm *MainForm;

//---------------------------------------------------------------------------

__fastcall TMainForm::TMainForm(TComponent* Owner)

        : TForm(Owner)

{

}

//---------------------------------------------------------------------------

void Moving(int CurrStage, int SelectStage)

{

    s = CurrStage - SelectStage; //Расстояние (в этажах) на которое нужно переместится

       if( s < 0) //Едем вверх

        {

                where = true;

        }

        else       //Едем вниз

        {

                where = false;

        }

        s = abs(s);

      MainForm->MoveTimer->Enabled = true; //Запускаем таймер перемещения

                                        //Один этаж лифт проезжает за 1,5 секунды

}

//---------------------------------------------------------------------------

void __fastcall TMainForm::MoveTimerTimer(TObject *Sender)

{

    if(DoorTimer->Enabled == false) //Едем только если двери закрыты - соблюдаем технику безопасности

    {

        if(n == s)

        {

                MainForm->MoveTimer->Enabled = false;

                //Приехали - отключаем таймер, обнуляем счётчик "пройденных" этажей

                n = 0;

                //Открываем двери

                open_flag = true;

                DoorTimer->Enabled = true;

                //Меняем цвет нажатой кнопки и картинку этажа

                ClearColor(CurrentStage, clCream);

                AnsiString buf;

                buf = ExtractFilePath(Application->ExeName) + "\stages\\stage";

                buf += CurrentStage+1;

                buf += ".jpg";

                Image4->Picture->LoadFromFile(buf);

                Up->Picture->LoadFromFile("pictures\\up.jpg");

                Down->Picture->LoadFromFile("pictures\\down.jpg");

        }

        else

        {

                if(where)

                {

                        CurrentStage++;

                        Up->Picture->LoadFromFile("pictures\\cup.jpg");

                }

                else

                {

                        CurrentStage--;

                        Down->Picture->LoadFromFile("pictures\\cdown.jpg");