Студопедия — Ход работы. Загрузите среду визуального программирования Delphi.
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Ход работы. Загрузите среду визуального программирования Delphi.






Загрузите среду визуального программирования Delphi.

 

2. Измените заголовок (Caption) формы с "Form1" на "Английский язык - тестирование";.

 

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

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

 

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

Рис. 17

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

 

Объект Свойство Значение
Timer1 Interval  
Timer2 Interval  
MediaPlayer1 Visible False
Gauge1 BackColor clInfoBk
Color clBtnFace
Font MS Sans Serif, Bold, 14, Yellow
ForeColor clGreen
Kind gkHorizontalBar
MaxValue  
MinValue  
Progress  
SpinEdit1 EditorEnabled False
MaxValue  
MinValue  
Value  
BitBtn1 Glyph D:\Program Files\Common Files\Borland Shared\Images\ Buttons\ check.bmp
Caption Готово
BitBtn2 Glyph D:\Program Files\Common Files\Borland Shared\Images\ Buttons\ dooropen.bmp
Caption Выход
Shape1, Shape2, Shape3 Brush-Color Shape clInfoBk stRoundRect
Image1, Image2, Image3 Stretch True
Label1 Font-Color Red
Font-Size  
Caption Обязательно нажмите на кнопку "Готово" после размещения рисунков!!
Label2, Lаbеl3,Label4 Font-Color Font-Size Olive

 

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

 

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

 

procedure TForm1.Timer1Timer(Sender: TObject);

Begin

if Label1.Visible=True then {Если поле светится}

Label1.Visible:=False {поле гасится,}

else Label1. Visible:= True; {иначе - поле засвечивается}

End;

 

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

 

const k=4; {Количество обновлений содержания теста}

a: array [1..k,1..3] of string =({Массив рисунков}

('car.wmf, 'money.wmf, 'bomb.wmf'),

('coins.wmf, 'clock.wmf, 'tennis.wmf),

('brick.wmf, 'building.wmf, 'champgne.wmf),

('dice.wmf, 'donkey.wmf, 'door.wmf));

 

b: array[1..k,1..3] of string =({Массив слов}

('money', 'car', 'bomb'),

('tennis', 'clock', 'coins'),

('building', 'champagne', 'brick'),

('dice', 'door', 'donkey'));

 

check: array[1..k,1..3] of integer=(

(2, 1, 3), {Таблица отображения}

(3, 2, 1), {массива рисунков а в массив}

(3, 1, 2), {слов b. Здесь число-}

(1, 3, 2)); {номер рисунка к слову}

 

var Form1: TForm1; {Эта строка уже есть в заготовке модуля}

i,score: integer;

shift,shift: integer;

left1,left2,left3: integer;

top1,top2,top3: integer;

 

7. Вставьте рисунки bomb.wmf, tennis.wmf и money.wmf из папки C:\Program Files\Microsoft Office\ media \ cagcat10 (либо спросить у преподавателя) объекты Image1, Image2 и Image3 соответственно. Свойствам Caption текстовых полей Label2, Label3 и Label4 установите значения "money", "bomb" и "tennis" соответственно.

 

8. Запрограммируйте процедуры: создание формы FormCreate, вставка рисунков SetPicture, вывод информации о результате теста Information и кнопку BitBtn2:

 

procedure TForm1.FormCreate(Sender: TObject);

Begin

i:=0; {Номер обновления содержания теста}

score:=0; {Набранные пользователем баллы}

left1:=Image1.Left; {Сохраняем начальные координаты}

left2:=Image2.Left; {левых верхних углов}

left3:=Image3.Left; {трех рисунков в форме}

top1:=Image1.Top;

top2:=Image2.Top;

top3:=Image3.Top;

SetPicture; {Процедура і-го вставление рисунков}

end;

 

procedure SetPicture;

Begin

{Пока рисунки не расположены правильно – кнопка "Готово" недоступная:}

Form1.BitBtn1.Enabled:=False;

i:=i+1; {Увеличиваем номер серии рисунков}

if i>=k+l then Information {Если тест закончен, то выводим результаты (процедура Information)}

else {Иначе}

Begin

{Обновляем слова:}

Form1.Label2.Caption:=b[i,1];

Form1.Label3.Caption:=b[i,2];

Form1.Label4.Caption:=b[i,3];

{Обновляем рисунки:}

Form1.Image1.Picture.LoadFromFile(a[i,1]);

Form1.Image2.Picture.LoadFromFile(a[i,2]);

Form1.Image3.Picture.LoadFromFile(a[i,3]);

{Обновляем индикатор времени на 100%:}

Form1.Gauge1.Progress:=Form1.Gauge1.MaxValue;

{Располагаем рисунки под фигурами:}

Form1.Image1.Left:=left1;

Form1.Image2.Left:=left2;

Form1.Image3.Left:=left3;

Form1.Image1.Top:=top1;

Form1.Image2.Top:=top2;

Form1.Image3.Top:=top3;

End;

End;

 

procedure Information;

Begin

{Останавливаем оба таймера}

Form1.Timer1.Enabled:=False; {Останавливаем мигание Label1}

Form1.Timer2.Enabled:=False; {Останавливаем движение индикатора времени}

{Результат теста приводим к 100 баллам}

score:=(score*100) div k;

{Если результат >90 – считываем файл громких аплодисментов}

if score>90 then

Form1.MediaPlayer1.FileName:='applause.wav'; {имена звуковых файлов могут быть другими – уточнить у преподавателя}

{Если результат между 70 и 90 – считываем файл легких аплодисментов}

if (score>70) and (score<90) then

Form1.MediaPlayer1.FileName:='clap.wav';

{В других случаях файл не считываем и аплодисментов не будет}

Form1.MediaPlayer1.Open; {Открываем мульт. плеер}

Form1.MediaPlayer1.Play; {Воссоздаем звук }

{Открываем окно сообщения "Вы набрали ## баллов из 100}

MessageDlg('Вы набрали '+IntToStr(score)+' баллов из 100', mtInformation,[mbOk], 0);

{После нажатия на кнопке "Ok" информационного окна:}

Form1.Close; { 3aкpивaeм окно программы - заканчиваем работу}

End;

 

procedure TForm1.BitBtn2Click(Sender: TObject);

Begin

Information;

End;

 

Процедуры Information и SetPicture не являются методами класса Form1. Поэтому изменение свойств любых объектов формы происходит в них путем явного указания имени формы Form1 перед именем соответствующего объекта, например, Form1.Timer1.Enabled. Объявление процедур Information и SetPicture вставьте между описанием типа Tform1 и разделом подсоединенных модулей uses:

 

procedure Information;

procedure SetPicture;

 

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

 

procedure TForm1.Image1MouseDown(Sender: TObject; Button:TMouseButton; Shift: TShiftState; X, Y: Integer);

Begin

{Временная переменная Tag объекта Image1 =1, если}

Image1.Tag:=1; {клавиши мыши в этот момент нажата}

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

shift:=X; {нажатия мышью в середине рисунка}

End;

 

procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer);

Begin

if Image1.Tag=1 then {Если нажатая клавиша мыши}

Begin

{Изменяем координаты рисунка на величину изменения координаты указателя мыши}

{(X;Y) с учетом его смещений в середине рисунка shiftX, shiftY}

Image1.Top:=Image1.Top + Y - shift;

Image1.Left:=Image1.Left +X - shift;

End;

End;

 

procedure Tform1.Image1MouseUpfSender: TObject; Button; TMouseButton;

Shift: TShiftState; X, Y: Integer);

Begin

Image1.Tag:=0

{Запоминаем, что кнопка мыши отпущена}

end;

 

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

 







Дата добавления: 2015-09-19; просмотров: 411. Нарушение авторских прав; Мы поможем в написании вашей работы!



Важнейшие способы обработки и анализа рядов динамики Не во всех случаях эмпирические данные рядов динамики позволяют определить тенденцию изменения явления во времени...

ТЕОРЕТИЧЕСКАЯ МЕХАНИКА Статика является частью теоретической механики, изучающей условия, при ко­торых тело находится под действием заданной системы сил...

Теория усилителей. Схема Основная масса современных аналоговых и аналого-цифровых электронных устройств выполняется на специализированных микросхемах...

Логические цифровые микросхемы Более сложные элементы цифровой схемотехники (триггеры, мультиплексоры, декодеры и т.д.) не имеют...

Постинъекционные осложнения, оказать необходимую помощь пациенту I.ОСЛОЖНЕНИЕ: Инфильтрат (уплотнение). II.ПРИЗНАКИ ОСЛОЖНЕНИЯ: Уплотнение...

Приготовление дезинфицирующего рабочего раствора хлорамина Задача: рассчитать необходимое количество порошка хлорамина для приготовления 5-ти литров 3% раствора...

Дезинфекция предметов ухода, инструментов однократного и многократного использования   Дезинфекция изделий медицинского назначения проводится с целью уничтожения патогенных и условно-патогенных микроорганизмов - вирусов (в т...

Стресс-лимитирующие факторы Поскольку в каждом реализующем факторе общего адаптацион­ного синдрома при бесконтрольном его развитии заложена потенци­альная опасность появления патогенных преобразований...

ТЕОРИЯ ЗАЩИТНЫХ МЕХАНИЗМОВ ЛИЧНОСТИ В современной психологической литературе встречаются различные термины, касающиеся феноменов защиты...

Этические проблемы проведения экспериментов на человеке и животных В настоящее время четко определены новые подходы и требования к биомедицинским исследованиям...

Studopedia.info - Студопедия - 2014-2024 год . (0.008 сек.) русская версия | украинская версия