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;   //Начальное значение – т.е. круг

}

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

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


 

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

18160. РОЗВИТОК ЗЕМЕЛЬНО – ПРАВОВОГО РЕГУЛЮВАННЯ В УКРАЇНІ 82 KB
  Лекція 2. РОЗВИТОК ЗЕМЕЛЬНО ПРАВОВОГО РЕГУЛЮВАННЯ В УКРАЇНІ План: 1.Часи аграрної реформи в Російській імперії середини XIX сторіччя. 2. Пореформений період другої половини XIX початку XX сторіччя. 3. Столипінська аграрна реформа в Росії. 4. Розвиток земельно
18161. ПОНЯТТЯ ТА ЗАГАЛЬНА ХАРАКТЕРИСТИКА ЗЕМЕЛЬНОЇ РЕФОРМИ В УКРАЇНІ 61.5 KB
  Лекція 3. ПОНЯТТЯ ТА ЗАГАЛЬНА ХАРАКТЕРИСТИКА ЗЕМЕЛЬНОЇ РЕФОРМИ В УКРАЇНІ План: 1. Передумови земельної реформи. 2. Поняття земельної реформи у правовій доктрині України. 3. Мета завдання напрямки земельної реформи. 4. Земельні реформи в історії Україні. Питання...
18162. ПРАВО ВЛАСНОСТІ НА ЗЕМЛЮ 75.5 KB
  Лекція 4. ПРАВО ВЛАСНОСТІ НА ЗЕМЛЮ План: 1. Поняття права власності на землю та особливості його об'єкту. 2. Змісту права власності на землю та особливості права володіння земельними ділянками. 3. Особливість права користування земельними ділянками. 4. Особливіст...
18163. ФОРМИ ПРАВА ВЛАСНОСТІ НА ЗЕМЛЮ 92 KB
  Лекція 5 ФОРМИ ПРАВА ВЛАСНОСТІ НА ЗЕМЛЮ План: Право приватної власності на землю. Право державної власності на землю. Право комунальної власності на землю . Право власності на землю Українського народу. Право колективної власності на землю. Пи
18164. ПРИВАТИЗАЦІЯ ЗЕМЕЛЬНИХ ДІЛЯНОК 83.5 KB
  Лекція 6 ПРИВАТИЗАЦІЯ ЗЕМЕЛЬНИХ ДІЛЯНОК План: Поняття та правові моделі приватизації. Приватизація земельних ділянок із земель запасу та земельних ділянок надані раніше у користування громадянам. Приватизація земельних ділянок колективами громадян ю...
18165. НАБУТТЯ ПРАВА ВЛАСНОСТІ НА ЗЕМЕЛЬНІ ДІЛЯНКИ ЗА ЦИВІЛЬНО - ПРАВОВИМИ УГОДАМИ 81 KB
  Лекція 7. НАБУТТЯ ПРАВА ВЛАСНОСТІ НА ЗЕМЕЛЬНІ ДІЛЯНКИ ЗА ЦИВІЛЬНО ПРАВОВИМИ УГОДАМИ План: 1. Загальні положення. 2. Купівля продаж. 3. Міна. 4. Дарування. 5. Спадкування. 6. Рента. Питання для самоконтролю: Питання для самостійного опрацювання: 1. Загальні ...
18166. ПРИПИНЕННЯ ПРАВА ПРИВАТНОЇ ВЛАСНОСТІ 84 KB
  Лекція 8 ПРИПИНЕННЯ ПРАВА ПРИВАТНОЇ ВЛАСНОСТІ План: Припинення права приватної власності як санкція за вчинене правопорушення. Викуп земельних ділянок приватної власності для суспільних потреб Примусове припинення права власності. Викуп земельних...
18167. ПРАВО ЗЕМЛЕКОРИСТУВАННЯ 95 KB
  Лекція 9. ПРАВО ЗЕМЛЕКОРИСТУВАННЯ План: Поняття права землекористування Особливості підстав виникнення права землекористування Особливості підстав припинення права землекористування Захист права землекористування Питання для самоконтро
18168. ОСОБЛИВОСТІ ОРЕНДНОГО ЗЕМЛЕКОРИСТУВАННЯ 79 KB
  Лекція 10. ОСОБЛИВОСТІ ОРЕНДНОГО ЗЕМЛЕКОРИСТУВАННЯ План: Загальна характеристика оренди землі та договору оренди землі Порядок укладання договорів оренди землі Умови договору оренди землі Зміна припинення поновлення договорів оренди землі Субо