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

                }

                Label1->Caption = CurrentStage+1;

                n++;

                //Сообщаем о перемещении программе контроля

                if(hFileMapMassiv)

                        pMessToContr[PROGNUM] = CurrentStage;

        }

    }

}

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

void __fastcall TMainForm::StartClick(TObject *Sender)

{

  if(SelectedStage != CurrentStage)

  {

        //Закрываем двери - поехали!

        open_flag = false;

        DoorTimer->Enabled = true;

        Moving(CurrentStage, SelectedStage);

  }

}

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

void __fastcall TMainForm::DoorTimerTimer(TObject *Sender)

{

             if(open_flag)

             {

                DoorPanel1->Width = DoorPanel1->Width - 10;

                DoorPanel2->Left = DoorPanel2->Left + 10;

                DoorPanel2->Width = DoorPanel2->Width - 10;

             }

             else

             {

                DoorPanel1->Width = DoorPanel1->Width + 10;

                DoorPanel2->Left = DoorPanel2->Left - 10;

                DoorPanel2->Width = DoorPanel2->Width + 10;

             }

             open_s++;

             if(open_s == 9)

             {

                   open_s = 0;

                   DoorTimer->Enabled = false;

             }

}

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

void __fastcall TMainForm::FormCreate(TObject *Sender)

{

  Image5->Width = MainForm->Width;

  Image5->Height = MainForm->Height;

// Определяем номер лифта (копии программы)

  if(_argc > 1)

  {

    PROGNUM = StrToInt(_argv[1]);

    AnsiString buf = MainForm->Caption;

    buf += " ";

    buf += PROGNUM+1;

    MainForm->Caption = buf;

  }

  else PROGNUM = 1;

  int len =  sizeof(HOUSE);

  // Открываем регион памяти для очереди сообщений основной программе

  hFileMapMassiv = OpenFileMapping(FILE_MAP_ALL_ACCESS,

                                             false,

                                             "HOUSE");

  if(!hFileMapMassiv)

  {

         ShowMessage("Не могу открыть отображение для очереди сообщений");

         return;

  }

  // Отображаем в адресное пространство процесса (с явным преобразованием типа)

   pMessToContr = (int*)MapViewOfFile(hFileMapMassiv,FILE_MAP_ALL_ACCESS,

                                0,0,len);

  if(pMessToContr == NULL)

  {

         ShowMessage("Не могу отобразить а адресное пространство процесса");

         CloseHandle(hFileMapMassiv);

         return;

  }

}

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

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

{

        if(hFileMapMassiv)  CloseHandle(hFileMapMassiv);

        if(pMessToContr)    UnmapViewOfFile(pMessToContr);

}

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

void __fastcall TMainForm::Bt9Click(TObject *Sender)

{

    if(CurrentStage != 8 )

    {

        ClearColor(SelectedStage, clCream);

        SelectedStage = 8;

        Bt9->Color = clYellow;

    }

}

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

void __fastcall TMainForm::Bt1Click(TObject *Sender)

{

   if(CurrentStage != 0 )

   {

    ClearColor(SelectedStage, clCream);

    SelectedStage = 0;

    Bt1->Color = clYellow;

   }

}

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

void __fastcall TMainForm::Bt8Click(TObject *Sender)

{

  if(CurrentStage != 7 )

  {

    ClearColor(SelectedStage, clCream);

    SelectedStage = 7;

    Bt8->Color = clYellow;

  }

}

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

void __fastcall TMainForm::Bt7Click(TObject *Sender)

{

  if(CurrentStage != 6 )

  {

    ClearColor(SelectedStage, clCream);

    SelectedStage = 6;

    Bt7->Color = clYellow;

  }

}

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

void __fastcall TMainForm::Bt6Click(TObject *Sender)

{

  if(CurrentStage != 5 )

  {

    ClearColor(SelectedStage, clCream);

    SelectedStage = 5;

    Bt6->Color = clYellow;

  }

}

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

void __fastcall TMainForm::Bt5Click(TObject *Sender)

{

  if(CurrentStage != 4 )

  {

    ClearColor(SelectedStage, clCream);

    SelectedStage = 4;

    Bt5->Color = clYellow;

  }

}

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

void __fastcall TMainForm::Bt4Click(TObject *Sender)

{

   if(CurrentStage != 3 )

   {

    ClearColor(SelectedStage, clCream);

    SelectedStage = 3;

    Bt4->Color = clYellow;

   }

}

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

void __fastcall TMainForm::Bt3Click(TObject *Sender)

{

  if(CurrentStage != 2 )

  {

    ClearColor(SelectedStage, clCream);

    SelectedStage = 2;

    Bt3->Color = clYellow;

  }

}

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

void __fastcall TMainForm::Bt2Click(TObject *Sender)

{

  if(CurrentStage != 1 )

  {

    ClearColor(SelectedStage, clCream);

    SelectedStage = 1;

    Bt2->Color = clYellow;

  }

}

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

void __fastcall TMainForm::ClearColor(int Stage, TColor Cvet)

{

   switch(Stage)

   {

        case 0: Bt1->Color = Cvet; break;

        case 1: Bt2->Color = Cvet; break;

        case 2: Bt3->Color = Cvet; break;

        case 3: Bt4->Color = Cvet; break;

        case 4: Bt5->Color = Cvet; break;

        case 5: Bt6->Color = Cvet; break;

        case 6: Bt7->Color = Cvet; break;

        case 7: Bt8->Color = Cvet; break;

        case 8: Bt9->Color = Cvet; break;

   };

}

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

Список литературы:

1.  Программирование в C++ Builder. А.Я. Архангельский, Бином, Москва, 2003.- 1151 с.

2.  Конспект лекций по курсу Операционные системы лектор Родников В.В. 2009г.