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

}

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

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


 

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

19177. Основы теории спекания 258.5 KB
  ЛЕКЦИЯ 12 Основы теории спекания Основой технологии получения керамического топлива для ядерных реакторов является спекание дисперсных порошков. Основная и важнейшая особенность дисперсного состояния заключается в том что значительная доля свободной энергии систе
19178. ФОРМИРОВАНИЕ СТРУКТУРЫ ТАБЛЕТОК НА ЗАКЛЮЧИТЕЛЬНОЙ СТАДИИ СПЕКАНИЯ 322 KB
  ЛЕКЦИЯ 13 ФОРМИРОВАНИЕ СТРУКТУРЫ ТАБЛЕТОК НА ЗАКЛЮЧИТЕЛЬНОЙ СТАДИИ СПЕКАНИЯ На начальной стадии спекания изменение объема прессовки определяется процессами припекания частиц. С увеличением площади контакта поры локализуются на границах и представляют собой совок...
19179. Рекристаллизация в процессе спекания 224.5 KB
  ЛЕКЦИЯ 14 Рекристаллизация в процессе спекания В любом поликристаллическом материале при нагревании до высокой температуры возрастает средний размер кристаллитов зерен. При этом некоторые из них напротив уменьшают свои размеры или исчезают вообще. Под ростом зерен...
19180. Способы активации спекания и управления структурой топливных таблеток 1.05 MB
  ЛЕКЦИЯ 15 Способы активации спекания и управления структурой топливных таблеток Технологические факторы ускоряющие спекание подразделяются на три вида: механические; теплотехнические; химические. В соответствии с этим различают три типа активирования спекания: м
19181. Контроль производства и качества таблеток 767.5 KB
  ЛЕКЦИЯ 16 Контроль производства и качества таблеток Качество таблеток во многом определяет работоспособность твэлов. Поэтому изготовление внешне довольно простых изделий сопровождается большим объемом контроля как всего технологического процесса так и готовых
19182. Технология производства оболочек твэлов энергетических реакторов 154 KB
  ЛЕКЦИЯ 17 Технология производства оболочек твэлов энергетических реакторов Выбор технологического процесса изготовления труб для оболочек твэлов включающего выплавку металла получение трубной заготовки получение полой гильзы и передел холодной деформации опре...
19183. Технология производства труб для реакторов на быстрых нейтронах 146.5 KB
  ЛКЦИЯ 18 Технология производства труб для реакторов на быстрых нейтронах В реакторах на быстрых нейтронах оболочки твэлов и чехлы ТВС выполнены из нержавеющих сталей. Типичная технология изготовления оболочек твэл из нержавеющих сталей включает следующие операци...
19184. Герметизация тепловыделяющих элементов 1.51 MB
  ЛЕКЦИЯ 19 Герметизация тепловыделяющих элементов Эксплуатационная надежность твэлов во многом определяется качеством выполненных сварных соединений. Она прямым образом связана со свариваемостью используемых конструкционных материалов с конструкцией соединений...
19185. Сварка твэлов с оболочками из легкоокисляющихся металлов 1.07 MB
  ЛЕКЦИЯ 20 Герметизация тепловыделяющих элементов. Сварка твэлов с оболочками из легкоокисляющихся металлов Газодувная сварка. Как правило сварку при изготовлении твэлов с использованием оболочек из легкоокисляющихся металлов в частности циркониевых сплаво