Чтение онлайн

на главную - закладки

Жанры

Delphi. Учимся на примерах

Парижский Сергей Михайлович

Шрифт:

Затем готовим форму ко второму вопросу: прячем первую панель и выводим вторую. Вызываем процедуру vars, которая выбирает вопрос и отображает его вместе с вариантами ответа.

Обработаем щелчок мышью на второй панели:

procedure TForm1.p2Click(Sender: TObject);

begin

 Label1.Caption:= 'Третий вопрос:';

 verno;

 p2.Visible:= False;

 p3.Visible:= True;

 vopr:= Random(4) + 1;

 vars(vopr);

end;

Здесь

происходит то же самое, что и для панели p1, только надпись метки принимает значение "Третий вопрос", мы прячем вторую "кнопку" и активизируем третью для следующего вопроса.

Аналогичные обработчики события OnClick создаем для третьей и четвертой панелей:

procedure TForm1.p3Click(Sender: TObject);

begin

 Label1.Caption:= 'Четвертый вопрос:';

 verno;

 р3.Visible:= False;

 p4.Visible:= True;

 vopr:= Random(4) + 1;

 vars(vopr);

end;

procedure TForm1.p4Click(Sender: TObject);

begin

 Label1.Caption:= 'Пятый вопрос:';

 verno;

 p4.Visible:= False;

 p5.Visible:= True;

 vopr:= Random(4) + 1;

 vars(vopr);

end;

Для пятой (последней) панели обработчик события OnClick будет выглядеть несколько иначе:

procedure TForm1.p5Click(Sender: TObject);

begin

 //проверяем правильность ответа на последний вопрос

 verno ;

 //узнаем, сколько баллов набрал пользователь

 ss:= IntToStr(balls);

 //делаем почти все компоненты невидимыми

 Memo1.Visible:= False;

 р5.Visible:= False;

 RadioGroup1.Visible:= False;

 Label1.Visible:= False;

 an1.Visible:= False;

 an2.Visible:= False;

 an3.Visible:= False;

 an4.Visible:= False;

 Label2.Visible:=True;//показываем
метку с результатом

 Label2.Align:= alClient;//растягиваем ее на всю форму

 //Отображаем процент правильных ответов

 Label2.Caption:= 'Правильных ответов' + IntToStr(balls*(100 div 5))+'%';

end;

После проверки правильности ответа на последний вопрос, мы прячем почти все компоненты на форме, оставляя видимой только метку Label2 для вывода результата и меню, чтобы можно было продолжить работу с программой. С помощью метки мы отображаем процент правильных ответов пользователя по формуле: "количество правильных ответов * (100 / количество заданных вопросов)". Пример отображения результата теста представлен на рис. 13.3.

Рис. 13.3. Отображение результата теста

Единственное, что осталось сделать, — реализовать имитацию нажатия кнопки при щелчке на панели мышью. Для того чтобы "оживить" панель, для нее следует создать обработчики двух событий: OnMouseDown и OnMouseUp. Первое событие возникает при щелчке мышью, а второе — при отпускании кнопки мыши. Для панели pi эти обработчики будут выглядеть следующим образом:

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

begin

 p1.BevelInner:= bvLowered;

 p1.BevelOuter:= bvRaised;

end;

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

begin

 p1.BevelInner:=bvRaised;

 p1.BevelOuter:=bvLowered;

end;

Для всех остальных панелей обработчики этих событий будут выглядеть аналогичным образом за исключением того, что имя p1 потребуется изменить на имя р2, p3, р4 или р5.

Программа тестирования в действии показана на рис. 13.4.

Рис. 13.4. Программа тестирования в действии

Полный исходный код модуля

Полный код модуля программы-теста представлен в листинге 13.1.

Листинг 13.1. Модуль программы-теста

unit Unit1;

interface

uses

 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, IniFiles, jpeg, Menus;

Поделиться:
Популярные книги

Усадьба леди Анны

Ром Полина
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Усадьба леди Анны

Чужая дочь

Зика Натаэль
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Чужая дочь

Светлая тьма. Советник

Шмаков Алексей Семенович
6. Светлая Тьма
Фантастика:
юмористическое фэнтези
городское фэнтези
аниме
сказочная фантастика
фэнтези
5.00
рейтинг книги
Светлая тьма. Советник

Двойник Короля

Скабер Артемий
1. Двойник Короля
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Двойник Короля

Его нежеланная истинная

Кушкина Милена
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Его нежеланная истинная

Последний Паладин. Том 2

Саваровский Роман
2. Путь Паладина
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Последний Паладин. Том 2

Измена. Наследник для дракона

Солт Елена
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Измена. Наследник для дракона

Идеальный мир для Лекаря 9

Сапфир Олег
9. Лекарь
Фантастика:
боевая фантастика
юмористическое фэнтези
6.00
рейтинг книги
Идеальный мир для Лекаря 9

Мастер темных Арканов

Карелин Сергей Витальевич
1. Мастер темных арканов
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Мастер темных Арканов

Адвокат империи

Карелин Сергей Витальевич
1. Адвокат империи
Фантастика:
городское фэнтези
попаданцы
фэнтези
5.75
рейтинг книги
Адвокат империи

Кодекс Охотника. Книга XXI

Винокуров Юрий
21. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Охотника. Книга XXI

Вечный. Книга II

Рокотов Алексей
2. Вечный
Фантастика:
боевая фантастика
попаданцы
рпг
5.00
рейтинг книги
Вечный. Книга II

Законы Рода. Том 3

Flow Ascold
3. Граф Берестьев
Фантастика:
фэнтези
аниме
5.00
рейтинг книги
Законы Рода. Том 3

Наследник

Шимохин Дмитрий
1. Старицкий
Приключения:
исторические приключения
5.00
рейтинг книги
Наследник