Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
анализирует, выбрана ли кнопка CheckBox2 на форме Form1.
На Form3 поместите также кнопку «Выход» для завершения работы приложения и напишите для нее обработчик:
procedure TForm3.Button1Click(Sender: TObject);
begin
Form1.Close; // закрыть главную форму приложения, после чего приложение
// завершит работу
end;
Завершать работу приложения лучше нажатием на эту кнопку, а не на крестик в верхнем правом углу окна приложения.
Убедитесь в том, что главной формой приложения является Form1 (эта форма будет появляться сразу после запуска приложения), для этого воспользуйтесь опцией меню Project/Options… и вкладкой Forms.
Затем сделайте панели с правильными ответами невидимыми и уменьшите ширину форм. После запуска приложения Form1 должна выглядеть так:
Аналогично должна выглядеть вначале и Form2.
На Form3 добавьте кнопку «Просмотр правильных ответов», по которой должны блокироваться все кнопки выбора на Form1 и Form2, отображаться невидимые ранее панели с правильными ответами на этих формах, увеличиваться ширина этих форм, скрываться Form3 и отображаться Form1, которая теперь уже должна выглядеть так:
Аналогично должна выглядеть на этапе просмотра ответов и Form2.
На каждую форму добавьте кнопку «Выход», по которой должна закрываться главная форма приложения Form1.Close;, после чего приложение заканчивает свою работу. Можно также на этапе просмотра ответов выводить на каждой из Form1 и Form2 информацию о том, правильно ли ответил пользователь на находящийся на форме вопрос, например, подсвечивать форму разными цветами в случаях правильного или неправильного ответов.
Индикатор времени (ProgressBar) находится на вкладке Win32 палитры компонентов.
Вначале разберитесь, как можно работать с этим компонентом: поместите его на форму, установите для него на этапе конструирования следующие целочисленные свойства, свойства: Min – 0 (начальное время), Max – 120 (конечное время, в секундах), Position – 30 (текущее время, в секундах). Вы увидите примерно такую картину:
Можете поэкспериментировать со свойствами Orientation и Smooth, чтобы выбрать подходящий внешний вид компонента.
Установите значение свойства Step = 5, пусть каждый раз к прошедшему времени добавляется 5 секунд. Установите текущее время (ProgressBar1.Position) в 0.
Поместите на форму обычную кнопку и напишите для нее такой обработчик:
procedure TForm1.Button1Click(Sender: TObject);
begin
ProgressBar1.Position:=ProgressBar1.Position+ProgressBar1.Step; // при каждом нажатии
// кнопки к текущему времени добавляется Step
end;
То же самое (почти) можно сделать, вызвав метод StepIt:
procedure TForm1.Button1Click(Sender: TObject);
begin
ProgressBar1.StepIt;
end;
Теперь запустите приложение и посмотрите, как оно работает.
… …
Измените обработчик – пусть в нем сравнивается текущее время и максимальное (ProgressBar1.Position и ProgressBar1.Max), в случае, если текущее время меньше максимального, к текущему времени добавляется Step, а если нет – выводится сообщение о том, что время закончилось. Запустите приложение и посмотрите, как оно работает.
Но нам нужно, чтобы индикатор времени отслеживал настоящее время, поэтому воспользуемся компонентом Timer. Он находится на вкладке System:
Добавьте на форму компонент Timer.
Этот компонент не отображается на форме в режиме выполнения программы. Установите для таймера свойство Interval в 5000 – мы хотим, чтобы событие OnTimer происходило каждые 5000 миллисекунд (5 секунд).
Напишите обработчик для события OnTimer компонента Timer1 – перепишите туда обработчик для кнопки, а кнопку можно удалить. Теперь через каждые 5 секунд будут выполняться операторы, записанные в этом обработчике и индикатор времени будет обновляться автоматически. Измените немного обработчик - в случае, если текущее время больше или равно максимальному, остановите таймер, добавив оператор
Timer1.Enabled:=False;
Теперь событие OnTimer больше не будет наступать, и его обработчик больше не будет выполняться.
Запустите приложение и посмотрите, как оно работает. Чтобы не ждать 2 минуты, пока закончиться время, можно при отладке изменить максимальное время, например, на 15 или 20 секунд.
Далее остается добавить новые компоненты и код в программу N25. Обработчик для OnTimer придется еще немного изменить - в случае, если текущее время больше или равно максимальному, должны выполниться все те действия (проверка ответов пользователя и вывод результата), которые выполняются по нажатие кнопки “Yes”, так что скопируйте код для кнопки в нужное место кода для таймера (либо просто вызовите процедуру BitBtn1Click(BitBtn1); или Button1Click(Button1); вместо повторения кода). В обработчике для кнопки заблокируйте варианты ответов пользователя и саму кнопку “Yes”, чтобы пользователь не смог вторично ответить на вопросы теста, и остановите таймер.
Компонент Gauge имеет основные целочисленные свойства, аналогичные свойствам компонента ProgressBar:
Свойства ProgressBar | Свойства Gauge | Краткое описание |
Max | MaxValue | Максимальное значение |
Min | MinValue | Минимальное значение |
Position | Progress | Текущее значение |
Поэкспериментируйте на этапе конструирования с этими свойствами Gauge, чтобы лучше понять, что они значат. Поэкспериментируйте также со свойствами Gauge, отсутствующими у ProgressBar – Kind (вид индикатора), ForeColor (цвет заполнения), BackColor (цвет фона).
Выберите горизонтальный, вертикальный или круглый (овальный) вид индикатора. Цвета выбирайте любые, кроме красного, так как его мы будем использовать в качестве предупреждающего цвета, указывающего пользователю, что время кончается.
У компонента Gauge нет свойства Step и метода StepIt, так что первоначальный обработчик для кнопки будет выглядеть так:
procedure TForm1.Button1Click(Sender: TObject);
begin
Gauge1.Progress:= Gauge1.Progress +5; // при каждом нажатии
// кнопки к текущему времени добавляется 5
end;
Далее выполняйте действия, аналогичные описанным в задаче 29, с учетом разного названия свойств и компонент. Когда до окончания работы останется 15 секунд, пусть индикатор времени перекрасится в красный цвет.
Вар-т 1:
1, 10, 11, 20, 21, 30 (*), задание 1 вар из бумажной методички (*), 31
Вар-т 2:
2, 9, 12, 19, 22, 29 (*), задание 2 вар из бумажной методички (*), 32
Вар-т 3:
3, 8, 13, 18, 23, 28 (*), задание 3 вар из бумажной методички (*), 33
Вар-т 4:
4, 7, 14, 17, 24, 27 (*), задание 4 вар из бумажной методички (*), 34
Вар-т 5:
5, 6, 15, 16, 25, 26 (*), задание 5 вар из бумажной методички (*), 35
Вар-т 6:
1, 9, 11, 18, 22, 27 (*), задание 6 вар из бумажной методички (*), 35
Вар-т 7:
2, 10, 12, 20, 23, 26 (*), задание 7 вар из бумажной методички (*), 34
Вар-т 8:
3, 7, 14, 17, 24, 30 (*), задание 8 вар из бумажной методички (*), 33
Вар-т 9:
4, 6, 15, 20, 25, 29 (*), задание 9 вар из бумажной методички (*), 32
Вар-т 10:
4, 9, 13, 19, 21, 28 (*), задание 10 вар из бумажной методички (*), 31
Дата публикования: 2014-11-19; Прочитано: 412 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!