- •5. Дважды щелкните на первом таймере и запрограммируйте мигание сообщения «Обязательно нажмите на кнопку «Готово» после размещения рисунков!!» так:
- •6*. Введите описание глобальных переменных программы:
- •6**. Введите описания глобальных констант и переменных программы:
- •7*.Запрограммируйте кнопку BitBtn2 как кнопку закрытия окна командой close.
- •7**.Запрограммируйте процедуры: создания формы FormCreate, вставки в неё рисунков SctPicture, вывод информации о результате теста Information и кнопку BitBtn2:
- •9. Аналогично запрограммируйте соответствующие события для перетягивания двух других рисунков.
- •10. Создайте еще один метод формы tForml - функцию ImageInShapeдля проверки расположения рисунка (объекта Image) в середине некоторой геометрической фигуры (объекта Shape).
- •11*.Запрограммируйте кнопку "Готово", проверяющую правильность расположения рисунков в середине фигур и выводящую информационное окно с сообщением "Правильно!" или "Неправильно!":
- •11**.Запрограммируйте кнопку "Готово", проверяющую правильность расположения рисунков в середине фигур:
- •12*.Запрограммируйте второй таймер, обеспечивающий индикацию времени выполнения от 100 до 0% со скоростью, обратно пропорциональной числу в SpinEditl.
- •13. Сохраните программу и проект в своей папке.
12*.Запрограммируйте второй таймер, обеспечивающий индикацию времени выполнения от 100 до 0% со скоростью, обратно пропорциональной числу в SpinEditl.
Если пользователь не успел расположить рисунки в прямоугольниках и нажать на кнопку "Готово" в заданное время, подается звук "ДИНГ" и открывается информационное окно с сообщением "Попробуйте ещё раз!".
procedure TForml.Timer2Timer(Sender: TObject);
begin
{Задаем скорость движения индикатора} timer2.interval := SpinEditl.value * 100;
{Работает индикатор времени}
gauge1.progress := gauge1.progress - 1;
if gauge1.progress = 0 then {Если время исчерпано}
begin
Timer1.Enabled := False;
Timer2.Enabled := False;
MediaPlayer1.FileName := 'ding.wav';
MediaPlayer1.Open;
MediaPlayer1.Play; {Подаемзвук"ДИНГ"}
MessageDlg('nonpo6yUTe еще раз!', mtInformation,
[mbOk], 0);
Timer1.Enabled := True;
Timer2.Enabled := True;
Gauge1.Progress := 100;
end; end;
12**.Запрограммируйте второй таймер, обеспечивающий доступность кнопки "Готово" лишь в случае правильного размещения всех рисунков в отведенных прямоугольниках и показывающий время со скоростью, обратно пропорциональной числу в SpinEditl.
В случае, если пользователь не успел расположить рисунки в прямоугольниках и нажать на кнопку "Готово" за надлежащее время, подается звук "ДИНГ", попытка не засчитывается, и про-.исходит переход к следующей серии рисунков.
procedureTForml.Timer2Timer(Sender: TObject); begin
{Задаем скорость движения индикатора } timer2.interval := SpinEditl.value'* 100;
{Если один из рисунков находится в первом прямоугольнике} if ( ImageInShape(Imagel,Shapel) or
ImageInShape(Image2,Shapel) or ImageInShape(Image3,Shapel)) and
{u один из рисунков находится во втором прямоугольнике} ( ImageInShape(Imagel,Shape2) or
ImageInShape(Image2,Shape2) or ImageInShape(Image3,Shape2)) and
{u один из рисунков находится в третьем прямоугольнике} ( ImageInShape(Imagel,Shape3) or
ImageInShape(Image2,Shape3) or
ImageInShape(Image3,Shape3)) {тo кнопка "Готово" становится доступной:} then BitBtnl.Enabled := True; {Работает индикатор времени} gaugel.progress:=gaugel.progress-l; if gaugel.progress = 0 then {Если времяисчерпано}
begin
MediaPlayerl.FileName := 'ding.wav';
MediaPlayer 1. Open;
MediaPlayerl.Play; {Подаем звук "ДИНГ"}
SetPicture; {Меняем серию рисунков}
end; end;
13. Сохраните программу и проект в своей папке.
14. Скопируйте музыкальные файлы ding.wav, applause.wav и clap.wav в свою папку из папок C:\WINDOWS\MEDIA\ Office97 и C:\WINDOWS\MEDIA соответственно.
15**.Скопируйте рисунки car.wmf, money.wmf, bomb.wmf, coins.wmf, clock.wmf, tennis.wmf, brick.wmf, building.wmf, champgne.wmf, dice.wmf, donkey.wmf, door.wmf в свою папку из папки C:\Program Files\Microsoft Office\Clipart\ Popular.
16. Запустите программу. Перетягивайте мышью рисунки на середину соответствующих фигур.
17. Создайте ехе-файл программы и поупражняйтесь с ней.
Контрольные вопросы задания:
Задача 6.1. Обеспечьте возможность перетягивания рисунков лишь левой клавишей мыши (см. пункт 8).
Задача 6.2. Увеличьте вдвое частоту мигания текста "Обязательно нажмите на кнопку "Готово" после размещения рисунков!!".
Задача 6.3. Поменяйте тип (свойство Kind) индикатора состояния на gkPie, gkNeedle и т.п., скорректировав форму и расположение объектов.
Задача 6.4. Замените в программе индикатор состояния типа Gauge на индикатор типа ProgressBar.
Задача 6.5.** Обеспечьте (кроме подсчета баллов) индикацию оценки за тест. Диапазону 100-86 баллов поставьте в соответствие оценку "5", диапазону 78-85 баллов - оценку "4", 51-77 - оценку "3", меньшее 51 балла — оценку "2". Подберите звуковые эффекты для разных оценок.
Задача 6.6. В версии программы, предназначенной для контроля знаний, подберите самую удачную скорость движения индикатора времени и сделайте объект SpinEdit1 недоступным для внесения изменений.
Задача 6.7. В версии программы, предназначенной для контроля знаний, удалите объект SpinEditl и задайте самую удачную скорость движения индикатора времени непосредственно в проекте.
Задача 6.8.** Увеличьте количество серий рисунков и подписей к ним.