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

}

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

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


 

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

16406. Финансовые функции Excel ПРОЦПЛАТ, ОСПЛТ 72.5 KB
  Финансовые функции Excel ПРОЦПЛАТ ОСПЛТ. Рассмотрим пример вычисления основных платежей платы по процентам общей ежегодной платы и остатка долга на примере ссуды 100000руб. на срок 5 лет при годовой ставке 2 представленной на рисунке: Ежегодная плата вычисляется в ячей...
16408. Финансовые функции Excel. Пример расчета эффективности капиталовложений с помощью функции ПС 145.5 KB
  Финансовые функции Excel. Пример расчета эффективности капиталовложений с помощью функции ПС. Рассмотрим следующую задачу. Вас просят дать в долг 10000 руб. и обещают возвращать по 2000руб. в течении 6 лет. Будет ли выгодна эта сделка при годовой ставке 7 В приведенно на рисунке...
16409. Финансовые функции Excel. Пример расчета эффективности капиталовложений с помощью функции ПЗ 144.5 KB
  Финансовые функции Excel. Пример расчета эффективности капиталовложений с помощью функции ПЗ. Рассмотрим следующую задачу. Вас просят дать в долг 10000 руб. и обещают возвращать по 2000руб. в течении 6 лет. Будет ли выгодна эта сделка при годовой ставке 7 В приведенно на рисунке...
16410. Практическое задание: использование функции вертикального просмотра (ВПР) 65.5 KB
  Практическое задание: использование функции вертикального просмотра ВПР Функция ВПР ищет значение в крайнем левом столбце справочной таблицы и возвращает значение в той же строке из указанного столбца таблицы. Синтаксическая форма ВПРискомое_значение;таблица;...
16411. ФУНКЦИИ EXCEL. ВВОД ФУНКЦИЙ В РАБОЧЕМ ЛИСТЕ EXCEL 133.75 KB
  Лекция 1. ФУНКЦИИ EXCEL Функции Excel это специальные заранее созданные формулы которые позволяют легко и быстро выполнять сложные вычисления. Их можно сравнить со специальными клавишами на калькуляторах предназначенных для вычисления квадратных корней логарифмов и про...
16412. Емпіричне дослідження гендерних особливостей міжособистісної взаємодії у ранній юності 403.5 KB
  Проблема стосунків жінки і чоловіка в суспільстві прадавня. Сьогодні вона набула особливої гостроти оскільки в світі активізується боротьба за ствердження демократичних норм і принципів. У цьому контексті гендерне партнерство (рівні відносини статей), гендерна рівність набувають все більшої актуальності.
16413. Национальные проекты в России, как одна из форм государственного управления. Национальный проект «Демография» 1.23 MB
  Причины депопуляции в ошибках конкретных государственных правителей — Депопуляция процесс объективный, исторически заданный. Для России низкая рождаемость, ведущая к депопуляции, будет иметь катастрофические последствия. — Депопуляция нежелательна, но не катастрофична; противостоять ей можно.
16414. Планирование, как функция управления 113.5 KB
  Планирование как функция управления Понятие функции управления. Функция планирование. Процесс стратегического планирования. I. Суть любого управления это достижение организацией целей при наиболее оптимальном использовании ресурсов. ...