Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа 12(ТСПП).docx
Скачиваний:
8
Добавлен:
01.05.2015
Размер:
83.39 Кб
Скачать

Ход работы

1.Загрузите среду визуального программирования C++ Вuіldеr.

2.Замените заголовок (Caption) формы с "Forml" на "Английский язык — тестирование".

3.Откажитесь от всех системных кнопок формы, задав значение False во всех позициях свойства Bordericons: biSystemMenu, biMinimize, biMaximize и biHelp.

Работу с программой будем завершать нажатием на кнопку "Выход".

4.Расположите на форме объекты так, как показан на рис. 1.

Задайте такие свойства объектов:

Объект

Свойство

Значение

Timer1

Interval

500

Timer2

Interval

100

MediaPlayer1

Visible

Orientation

Max

Min

Position

False pbHorizontal 100

0

100

ProgressBar1

SpinEdit1

Editor

Enabled

MaxValue

MinValue

Value

False 10

1

5

BitBtn1

Kind

Caption

bkOk Готово

BitBtn2

Kind Caption

bkClose Выход

Shape1,

Shape2, Shape3

Brush-Color

Shape

cllnfoBk stRoundRect

Image1, Image2, Image3

Stretch

True

Label1

Caption

Обязательно нажмите на кноп­ку "Готово" после размещения рисунков!!!

Wordwrap

true

Замечание 1. Размеры фигур должны быть большими, чем размеры рисунков, поскольку рисунки следует располагать строго в середине фигур. Если во время наложения рисунка на фигуру рисунок исчезает, переместите его на передний план командой его контекстового меню Bring To Front.

5. Дважды щелкните на первом таймере и запрограммируйте мигание сообщения "Обязательно нажмите на кнопку "Готово" после размещения рисунков!!!" так:

void_fastcall TForm1::Timer1Timer(TObject *Sender)

{

if(Label1->Visible) // Если поле светится

Label1 -> Visible = false; // поле гасится,

else

Label1 ->Visible = true; // иначе-поле засветится

}

Запустите программу и убедитесь, что надпись на форме мерцает.

6. Введите описание глобальных переменных программы:

Для этого в окне текста программы после существующего описания переменной формы введите такие строки:

TForm1 *Form1 // Эта строка уже есть в заготовке модуля

bool click = false // Наличие щелканья мыши int shiftX, shiftY // Координаты мыши внутри рисунка

int x1, x2, хЗ, y // Начальные координаты рисунков

enum info {right, wrong, more}

// Результаты теста

7. Вставьте рисунки factory.Bmp, shipping.Bmp и finance.Bmp с папки

C:\ Program Files \Common Files \ Borland Shared \ Images\ Splash \ 256Color в объекты lmage1, lmage2 и lmage3 соответственно. Вставьте подписи к этим рисункам (см. рис. 1).

8. Запрограммируйте конструктор формы tForm1::tForm1 и функцию Result() сообщения результатов теста:

_fastcall TForm1::TForm1(TComponenr* Owner): TForm(Owner)

{

x1 = Image1 -> Left; // Сохраняем начальные координаты

x2 = lmage2 -> Left; // левых верхних углов

хЗ = lmage3 -> Left; // трех рисунков в форме

y = lmage1 -> Тор;

}

void Result(info msg)

{

// Останавливаем таймеры:

Form1 -> Timer1 -> Enabled = false;

Form1 -> Timer2 -> Enabled = false;

// Считываем звуковой файл:

if (msg == right) Form1 -> MediaPlayer1 -> FileName = "tada.wav";

else Form1 -> MediaPlayer1 -> FileName = "ding.wav";

// Открываем плеер

Form1 -> MediaPlayer1 -> Open();

// Воссоздаем звук

Form1 -> MediaPlayer1 -> Play();

// Открываем окно сообщения

if (msg = = right) Application -> Меssageвох ("Правильно!",

"Сообщения", MB_OK);

if (msg = = wrong) Application -> MessageBox ("Hеправильно!",

"Сообщения", MB_OK);

if (msg = = more) Application -> MessageBox ("Попpo6yйте еще раз!",

"Сообщения", MB_OK);

Form1 -> Timer1 -> Enabled = true; // Запускаем таймеры

Form1 -> Timer2 -> Enabled = true;

Form1 -> ProgressBar1->Position = 100; // Индикатор на начало

Form1 -> lmage1 -> Left = x1; // Возвращаем рисунки в

Form1 -> lmage2 -> Left = x2; // исходное положение

Form1 -> lmage3 -> Left = х3;

Form1 -> lmage1 -> Top = y;

Form1 -> lmage2 -> Top = y;

Form1 -> lmage3 -> Top = y;

}

Функция Result() не является методом класса Form1. Поэтому изменение свойств любых объектов формы в ней происходит путем явного указания имени формы Form1 перед именем соответствующего объекта, например, Form1->Timer1->Enabled.

9. Обеспечьте перетягивание первого рисунка на форме, запрограммировав обработки таких трех событий для объекта lmage1: OnMouseDown (ЕслиНажатьМышь), OnMouseMove (ЕслиТянутьМышь) и OnMouseUp (ЕслиОтпуститьМышь). Для заполнения заготовок приведенных функций воспользуйтесь закладкой Events окна инспектора объектов первого рисунка.

void_fastcall TForm1::Image1MouseDown(TObject *Sender,

TMouseButton Button, TShiftState Shift, int X, int Y)

{

click = true; // click - это индикатор нажатия на клавишу мыши

shift = X; // Запоминаем координату (X;Y) точки

shift = Y; // щелканья мышью внутри рисунка

}

void_fastcall TForm1 ::Image1MouseMove(TObject *Sender,

TShiftState Shift, int X, int Y)

{

if (click) { // Если нажата клавиша мыши, изменяем

// координаты рисунка на величину

// изменения координаты

Image1 ->Left = Image1 ->Left + X - shiftX; // указателя мыши (X;Y) с

Image1->Top =Image1->Top +Y-shiftY; //учетом его

// смещений в середине } //рисунка shiftX, shiftY

}

void_fastcall TForm1::lmage1MouseUp(TObject *Sender,

TMouseButton Button, TShiftState Shift, lnt X, int Y)

{

// Запоминаем, что клавиши мыши отпущенная

click - false;

}

Обратите внимание, что программа не проверяет, на какую именно клавишу мыши нажал пользователь, и потому перетягивание можно осуществлять любой клавишей. Проверить клавиши мыши можно, проанализировав аргумент Button (типа TMouseButton) приведенных функций: Button = {mbLeft (левая клавиша), mbRight (права), mbMiddle (средняя)}. Координаты указателя мыши в пикселях передаются в функции с помощью аргументов X и Y целого типа.