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

}

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

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


 

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

30818. ADO, провайдеры ADO 11.36 KB
  DO позволяет представлять данные из разнообразных источников реляционных баз данных текстовых файлов и т. Провайдеры DO обеспечивают соединение приложения использующего данные через DO с источником данных сервером SQL локальной СУБД файловой системой и т. Для каждого типа хранилища данных должен существовать провайдер DO. Провайдер знает о местоположении хранилища данных и его содержании умеет обращаться к данным с запросами и интерпретировать возвращаемую служебную информацию и результаты запросов с целью их передачи приложению.
30819. Генератор отчетов Rave Reports 5.0 18.73 KB
  Компоненты для создания отчетов Генератор отчетов Rve Reports 5.0 Генератор отчетов Rve Reports 5.0 разработан фирмой Nevron и входит в состав Delphi 7 в качестве основного средства для создания отчетов. Он состоит из трех частей: ядро генератора отчетов обеспечивает управление отчетом и его предварительный просмотр и отправку на печать.
30820. Доступ к общим данным 17.87 KB
  Доступ к общим данным Строки являются записями а столбцы полями таблицы базы данных. Класс tdtset обеспечивает возможность редактирования набора данных а также предоставляет средства для перемещения навигации по записям. Этот класс инкапсулирует в себе функциональные возможности borlnd dtbse engine bde процессора баз данных фирмы borlnd. Класс tbdedtset имеет класспотомок tdbdtset в котором определены дополнительные свойства и методы обеспечивающие возможность связывания набора данных с физическими таблицами базы данных.
30821. Структура BDE 46.29 KB
  Структура BDE Архитектура и функции BDE BDE представляет собой набор динамических библиотек которые умеют передавать запросы на получение или модификацию данных из приложения в нужную базу данных и возвращать результат обработки. В составе BDE поставляются стандартные драйверы обеспечивающие доступ к СУБД Prdox dBSE FoxPro и текстовым файлам. Структура процессора баз данных BDE Доступ к данным серверов SQL обеспечивает отдельная система драйверов SQL Links. Помимо этого в BDE имеется очень простой механизм подключения любых драйверов...
30822. Модели организации данных в БД 30.78 KB
  Модели организации данных в БД Организация баз данных – физическая и логическая Организация БД Организация данных базыопределяется видом модели данных которую поддерживает конкретная СУБД. Модель данных это методпринцип логической организации данных реализуемый в СУБД. Организация данныхв базе характеризуется двумя уровнями логическим и физическим. Логическаяорганизация БД определяется типом структур данных и видоммодели данных которая поддерживается СУБД.
30823. Реляционная модель базы 14.12 KB
  Реляционная модель базы Реляционная модель ориентирована на организацию данных в виде двумерных таблиц. Каждая реляционная таблица представляет собой двумерный массив и обладает следующими свойствами: все столбцы в таблице – однородные имеют одинаковый тип; каждый столбец имеет уникальное имя; одинаковые строки в таблице отсутствуют; порядок следования строк и столбцов может быть произвольным. В реляционной модели данных объекты и взаимосвязи между ними представляются с помощью таблиц. Каждая таблица представляет один объект и состоит из...
30824. Виды связей в БД 16.81 KB
  При этом таблица Книги будет содержать ссылки на записи таблицы Издатели . В большинстве случаев сопоставляются первичный ключ одной таблицы содержащий для каждой из строк уникальный идентификатор и внешний ключ другой таблицы. При такой связи каждой строке таблицы А может соответствовать множество строк таблицы Б однако каждой строке таблицы Б может соответствовать только одна строка таблицы А. Связи многие ко многим При установлении связи многие ко многим каждой строке таблицы А может соответствовать множество строк таблицы Б и наоборот.
30825. Типы СУБД 13.67 KB
  Централизованная база данных хранится в памяти одной вычислительной системы. Такой способ использования баз данных часто применяют в локальных сетях ПК. Распределенная база данных состоит из нескольких возможно пересекающихся или даже дублирующих друг друга частей хранимых в различных ЭВМ вычислительной сети.
30826. Классификация СУБД по архитектуре (одно-, двух-, трехзвенные) 43.7 KB
  По своей архитектуре СУБД делятся на одно двух и трехзвенные В однозвенной архитектуре используется единственное звено клиент обеспечивающее необходимую логику управления данными и их визуализацию. В двухзвенной архитектуре значительную часть логики управления данными берет на себя сервер БД в то время как клиент в основном занят отображением данных в удобном для пользователя виде.