16597

Многооконный интерфейс. Управление объектами с помощью клавиш

Лабораторная работа

Информатика, кибернетика и программирование

Лабораторная работа 1 Многооконный интерфейс. Управление объектами с помощью клавиш. Цель работы: Создать программу которая позволяет пользователю управлять объектом с помощью стрелок на клавиатуре а также позволяет менять цвет этого объекта посредством выбора цве

Русский

2013-06-22

136 KB

3 чел.

Лабораторная работа 1

Многооконный интерфейс. Управление объектами с помощью клавиш.

Цель работы: Создать программу, которая позволяет пользователю управлять объектом с помощью стрелок на клавиатуре, а также позволяет менять цвет этого объекта посредством выбора цвета на палитре, находящейся на другой форме.

Общий вид программы следующий:

Здесь мы видим следующие элементы управления:

«Показать цвета» - Показывает палитру для изменения цвета фигуры (Рис.1)

«Показать формы» - Показывает окно для выбора формы фигуры (Рис.2)

«Координаты центра» - Показывает текущие координаты центра фигуры

Рисунок 1

Рисунок 2

Код программы:

Unit1.cpp

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

#include <vcl.h>

#pragma hdrstop

#include "Unit1.h"    //Связывание различных форм

#include "Unit2.h"

#include "Unit3.h"

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

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

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

__fastcall TForm1::TForm1(TComponent* Owner)

       : TForm(Owner)

{

}

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

void __fastcall TForm1::Button1Click(TObject *Sender) //Кнопка показать цвета

{

Form2->Show();       //Показать форму

Button1->Hide();       //Спрятать кнопку

} 

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

void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key,

     TShiftState Shift)

{

switch(Key){        //Множественный выбор

case VK_LEFT: Shape1->Left = Shape1->Left-5; break; //Стрелка влево

case VK_UP: Shape1->Top = Shape1->Top-5; break;  //Вверх

case VK_RIGHT: Shape1->Left = Shape1->Left+5;  break; //Вправо

case VK_DOWN:Shape1->Top = Shape1->Top+5; break; //Вниз

}

Label1->Caption = "X=" + IntToStr(Shape1->Left + Shape1->Width/2); //Координаты

Label2->Caption = "Y=" + IntToStr(Shape1->Top + Shape1->Height/2 ); //в Label

}

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

void __fastcall TForm1::FormCreate(TObject *Sender)

{ Shape1->Left = 0;     //Начальные координаты объекта

Shape1->Top = 0;

Label1->Caption = "X=" + IntToStr(Shape1->Left + Shape1->Width/2);

Label2->Caption = "Y=" + IntToStr(Shape1->Top + Shape1->Height/2 );

}

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

void __fastcall TForm1::Button2Click(TObject *Sender)

{

Form3->Show();

Button2->Hide();

}

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

void __fastcall TForm1::Label3Click(TObject *Sender) //При нажатии на надпись

{         //Появляются обе кнопки

Button1->Show();

Button2->Show();

}

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

Unit2.cpp

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

#include <vcl.h>

#pragma hdrstop

#include "Unit2.h"

#include "Unit1.h"

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

#pragma package(smart_init)

#pragma link "CGRID"

#pragma resource "*.dfm"

TForm2 *Form2;

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

__fastcall TForm2::TForm2(TComponent* Owner)

       : TForm(Owner)

{

}

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

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

void __fastcall TForm2::CColorGrid1MouseUp(TObject *Sender,

     TMouseButton Button, TShiftState Shift, int X, int Y)

{

  if(Button == mbLeft)    //При нажатии мышью меняется цвет

  {

     Form1->Shape1->Brush->Color = CColorGrid1->ForegroundColor;

  }

}

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

Здесь происходит обращение к форме, а точнее к цвету объекта на форме 1 и он заменяется на цвет выбранный в ColorGrid

Unit3.cpp

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

#include <vcl.h>

#pragma hdrstop

#include "Unit3.h"

#include "Unit2.h"

#include "Unit1.h"

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

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm3 *Form3;

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

__fastcall TForm3::TForm3(TComponent* Owner)

       : TForm(Owner)

{

}

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

void __fastcall TForm3::RadioGroup1Click(TObject *Sender)

{

switch(RadioGroup1->ItemIndex)   //Выбор формы, просто RadioGroup

{

case 0: Form1->Shape1->Shape = stCircle;   //Круг

        Form1->Shape1->Width = 80; break;

case 1: Form1->Shape1->Shape = stSquare;   //Квадрат

        Form1->Shape1->Width = 80; break;

case 2: Form1->Shape1->Shape = stRoundRect;  //Квадрат с закруг. углами

        Form1->Shape1->Width = 80; break;

case 3: Form1->Shape1->Shape = stEllipse;  //Элипс

        Form1->Shape1->Width = 160; break;   //Приходиться менять ширину

}       //т.к. эллипс в квадрате это круг

}

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

void __fastcall TForm3::FormCreate(TObject *Sender)

{

RadioGroup1->ItemIndex = 0;   //Начальное значение – т.е. круг

}

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

Вывод: Мы получили навыки создания многооконных приложений и управление объектами при помощи клавиатуры.


 

А также другие работы, которые могут Вас заинтересовать

64487. ЛЮБОМИР ВИНАР ЯК ДОСЛІДНИК УКРАЇНСЬКОЇ ІСТОРІЇ ТА ІСТОРІОГРАФІЇ 179.5 KB
  Винара що зумовлює актуальність даної теми адже науковий доробок вченого є важливим надбанням української історичної думки. Винара в дослідження проблем історії України та української історіографії.
64488. ВПЛИВ АТМОСФЕРНОГО ЗАБРУДНЕННЯ ГІРНИЧО-МЕТАЛУРГІЙНОГО КОМПЛЕКСУ НА ФОРМУВАННЯ ПСИХОФІЗІОЛОГІЧНОГО СТАТУСУ ДІТЕЙ 3-7-РІЧНОГО ВІКУ 248 KB
  У практиці епідеміологічних досліджень проведених серед дітей дошкільного і молодшого шкільного віку таким факторам як стать і вік приділяється недостатньо уваги; надаються неоднозначні дані щодо особливостей статевої вікової...
64489. ДЕРЖАВНЕ СТИМУЛЮВАННЯ ІННОВАЦІЙНОГО РОЗВИТКУ ХІМІЧНОЇ ГАЛУЗІ 227.5 KB
  Світова фінансова криза та її наслідки для економіки України з урахуванням існуючих структурних диспропорцій актуалізували потребу в детальному аналізі інноваційної складової стратегії соціально-економічного розвитку країни.
64490. Закономірності процесів оптимального повітряного охолодження плавильних реакторів скляного виробництва 1.22 MB
  Найбільш розповсюдженим способом охолодження стін варильного басейну є обдув повітрям. За рахунок охолодження реактор може проробити тривалий час навіть при невеликій залишковій товщині стінового огородження...
64491. ОЦІНКА НЕОДНОРІДНОСТІ УЩІЛЬНЕНИХ ҐРУНТІВ ШТУЧНИХ ОСНОВ 640 KB
  За цих умов геотехніка рекомендує влаштування штучних масивів з кращими будівельними властивостями ніж у природних ґрунтів. Певною проблемою при нормуванні властивостей ущільненого масиву також є невідповідність оптимальних параметрів ущільнення...
64492. БЕТОНИ НА ОСНОВІ КОМПОЗИЦІЙНИХ ЦЕМЕНТІВ, АКТИВОВАНИХ У ВИСОКОВОЛЬТНОМУ ЕЛЕКТРИЧНОМУ ПОЛІ 292.5 KB
  Важливим напрямком у вирішенні цих проблем є розробка композиційних цементів в тому числі багатокомпонентних що містять різні мінеральні добавки природного та техногенного походження.
64493. Одержання цирконійвмісних сполук з циркону Малишевського родовища 139 KB
  Україна є власником єдиного в Європі родовища високоякісної цирконієвмісної сировини циркону силікат цирконію. Промислові потужності базового підприємства з видобутку та переробки циркону Малишевського родовища Вільногірського гірничо-металургійного...
64494. ТРИВОЖНІСТЬ ЯК ЧИННИК ДЕЗАДАПТАЦІЇ ПРАКТИЧНИХ ПСИХОЛОГІВ-ПОЧАТКІВЦІВ 472 KB
  Важливим у цьому контексті є врегулювання тривожності яка може негативно впливати на успішність оволодіння професією на результативність і якість професійної діяльності зокрема психологапрактика що як представник допомагаючих професій мусить бути для клієнта еталоном психологічного здоровя.
64495. ВИСОКОВОЛЬТНІ ЕЛЕКТРОРОЗРЯДНІ СВЕРДЛОВИННІ КОМПЛЕКСИ З ПІДВИЩЕНИМИ ПИТОМИМИ ЕНЕРГЕТИЧНИМИ ПАРАМЕТРАМИ 1.49 MB
  Було показано що ефективність комплексів визначається сукупністю характеристик електророзрядних імпульсів і пристроїв перетворення параметрів електричної енергії. В зв‘язку з погіршенням умов спуску занурювальної установки електророзрядних комплексів в зону обробки виникла необхідність зменшення її довжини.