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

}

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

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


 

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

83658. Векторные и топографические диаграммы 135.5 KB
  Для наглядного определения величины и фазы напряжения между различными точками электрической цепи удобно использовать топографические диаграммы. Они представляют собой соединенные соответственно схеме электрической цепи точки на комплексной плоскости отображающие их потенциалы. Для построения топографической диаграммы предварительно осуществим расчет комплексных потенциалов другой вариант построения топографической диаграммы предполагает расчет комплексов напряжений на элементах цепи с последующим суммированием векторов напряжений вдоль...
83659. Анализ цепей с индуктивно связанными элементами 150 KB
  Такие элементы могут связывать цепи электрически гальванически разделенные друг от друга. В том случае когда изменение тока в одном из элементов цепи приводит к появлению ЭДС в другом элементе цепи говорят что эти два элемента индуктивно связаны а возникающую ЭДС называют ЭДС взаимной индукции. Степень индуктивной связи элементов характеризуется коэффициентом связи 1 где М взаимная индуктивность элементов цепи размерность Гн; и собственные индуктивности этих элементов.
83660. Особенности составления матричных уравнений при наличии индуктивных связей и ветвей с идеальными источниками 118 KB
  В общем случае разветвленной цепи со взаимной индукцией матрица сопротивлений ветвей имеет вид Z . Здесь элементы главной диагонали комплексные сопротивления ветвей схемы; элементы вне главной диагонали комплексные сопротивления индуктивной связи i й и k й ветвей знак ставится при одинаковой ориентации ветвей относительно одноименных зажимов в противном случае ставится...
83661. Методы расчета, основанные на свойствах линейных цепей 165.5 KB
  Метод наложения Данный метод справедлив только для линейных электрических цепей и является особенно эффективным когда требуется вычислить токи для различных значений ЭДС и токов источников в то время как сопротивления схемы остаются неизменными. Аналитически принцип наложения для цепи содержащей n источников ЭДС и m источников тока выражается соотношением . 1 Здесь комплекс входной проводимости k й ветви численно равный отношению тока к ЭДС в этой ветви при равных нулю ЭДС в остальных ветвях; комплекс взаимной ...
83662. Метод эквивалентного генератора 123.5 KB
  как сумму двух составляющих одна из которых вызывается источниками входящими в структуру активного двухполюсника и источником ЭДС расположенным между зажимами 1 и 2 слева а другая источником ЭДС расположенным между зажимами 1 и 2 справа. Параметры эквивалентного генератора активного двухполюсника могут быть определены экспериментальным или теоретическим путями. В первом случае в частности на постоянном токе в режиме холостого хода активного двухполюсника замеряют напряжение на его зажимах с помощью вольтметра которое и равно ....
83663. Пассивные четырехполюсники 223.5 KB
  При анализе электрических цепей в задачах исследования взаимосвязи между переменными (токами, напряжениями, мощностями и т.п.) двух каких-то ветвей схемы широко используется теория четырехполюсников. Четырехполюсник – это часть схемы произвольной конфигурации, имеющая две пары зажимов (отсюда и произошло его название), обычно называемые входными и выходными.
83664. Электрические фильтры 146.5 KB
  Качество фильтра считается тем выше чем ярче выражены его фильтрующие свойства т. Классификация фильтров Название фильтра Диапазон пропускаемых частот Низкочастотный фильтр фильтр нижних частот Высокочастотный фильтр фильтр верхних частот Полосовой фильтр полоснопропускающий фильтр Режекторный фильтр полоснозадерживающий фильтр и где В соответствии с материалом изложенным в предыдущей лекции если фильтр имеет нагрузку сопротивление которой при всех частотах равно характеристическому то напряжения и соответственно токи на...
83665. Трехфазные электрические цепи 108.5 KB
  Поэтому в энергетике строго следят за тем чтобы нагрузка генератора оставалась симметричной. Можно было бы использовать систему в которой фазы обмотки генератора не были бы гальванически соединены друг с другом. В этом случае каждую фазу генератора необходимо соединять с приемником двумя проводами т.
83666. Расчет трехфазных цепей 143.5 KB
  Равенство модулей указанных сопротивлений не является достаточным условием симметрии цепи. Если к симметричной трехфазной цепи приложена симметричная трехфазная система напряжений генератора то в ней будет иметь место симметричная система токов. Такой режим работы трехфазной цепи называется симметричным.