}
//---------------------------------------------------------------------------
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");
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.