84
списка вопросов и ответов, которые представляют из себя списки объектов
классов TQuestion и TAnswer. Далее вся работа с тестом происходит через
объект класса TTest.
Форма имеет четыре панели для отображения органов управления работы
с тестом: панель наименования, панель текущего вопроса, панель ответов на
текущий вопрос, панель навигации по тесту.
В панели наименования отображается подробное наименование теста, а
также значение времени и номер вопроса. В значении времени отображается
время в часах, минутах и секундах, оставшееся до окончания теста, если в
параметрах теста задан лимит времени на его прохождение. Если лимит времени
не задан, то отображается текущее системное время. Для реализации функции
времени предназначены два объекта TTimer, размещенные на форме. Первый из
них предназначен для контроля лимита времени (если он задан). В его интервал
записывается значение в миллисекундах, соответствующее лимиту времени,
заданному в минутах. При срабатывании этого таймера вызывается процедура
завершения теста. Второй таймер имеет интервал в одну секунду и
предназначен для изменения текста в компоненте TLabel, отображающем
оставшееся или текущее время.
В панели текущего вопроса отображается текст и картинка текущего
вопроса. Номер текущего вопроса – это свойство класса TTest, которое в методе
ShowModal принимает значение ноль и далее меняется в зависимости от
навигации по тесту. Текущий вопрос берется из объекта TTest при помощи
метода GetQuest. Заметим, что если в текущем вопросе нет картинки, то поле
для нее не отображается и вся панель текущего вопроса занята текстом вопроса.
Для вывода изображения картинки вопроса предназначен компонент TImage
размещенный на панеле-контейнере TPanel. При выводе изображения
вызывается метод ComputeImage формы FQuestAnswer, который рассчитывает
размер и местоположение компонента TImage относительно компонента-
контейнера TPanel таким образом, чтобы изображение в компоненте TImage