RSS    

   Реферат: Разработка тестового приложения Компоненты меню Delphi

После того как будет написана процедура обработки события, нужно связать эту процедуру с конкретным компонентом. Делается это путем присвоения имени процедуры обработки свойству, имя которого совпадает с именем обрабатываемого события.

2.4.3. Загрузка файла теста

Передать имя файла теста программе тестирования можно через параметр командной строки путем настройки свойств значка, изображающего программу тестирования на рабочем столе или в папке.

Например, для настройки программы тестирования, значок запуска которой находится на рабочем столе, на работу с файлом теста ххх.txt, необходимо щелкнуть правой кнопкой мыши на значке программы, из появившегося контекстного меню выбрать команду Свойства и в поле Объект, после имени файла программы (Project1.exe), ввести имя файла теста (xxx.txt), заключив его в двойные кавычки (рис. 3). Текст, находящийся в поле Объект вкладки Ярлык диалогового окна Свойства, называется командной строкой.

Программа может получить параметр, указанный в командной строке запуска программы, как значение функции ParamStr (n), где n - номер параметра. Количество параметров командной строки находится в глобальной переменной Paramcount. Для приведенного выше примера командной строки запуска программы тестирования значение переменной Paramcount равно 1, а функции ParamStr (1) - xxx.txt.

Ниже приведен фрагмент программы, обеспечивающий прием параметра из командной строки:

if ParamCount = 0 then

begin

ShowMessage(' Ошибка! Не обнаружено файла вопросов теста. ');

goto bye;  // аварийное завершение программы

end;

FileName:= ParamStr (1); // имя файла - параметр командной строки.

При запуске программы, использующей параметры командной строки, из среды разработки параметры нужно ввести в поле Parameters диалогового окна Run Parameters (рис. 4), которое открывается в результате выбора из меню Run команды Parameters.



Рис 3. Настройка программы тестирования

Рис 4. Диалоговое окно Run Parameters

2.5. Описание пользовательского интерфейса

После создания формы в окно редактора кода, в секцию implementation следует поместить описание глобальных констант (раздел const) и переменных (раздел var). Затем можно приступить к созданию процедур обработки событий.

Их в программе три:

1. Обработка события OnActivate для стартовой формы.

2. Обработка события Onclick для командной кнопки Button1.

3. Процедура обработки события Onclick - одна, общая для переключателей выбора ответа.

После запуска программы и вывода на экран стартовой формы происходит событие onActivate. Процедура FormActivate сначала вызывает процедуру ResetForm, которая, присваивая значение False свойству Visible, делает невидимыми поля вывода альтернативных ответов и все переключатели. Аналогично делается невидимой область иллюстрации. Кроме того, процедура устанавливает максимально возможную ширину полей меток альтернативных ответов.

После очистки формы проверяется, указан ли при запуске программы параметр - имя текстового файла с вопросами теста.

Если параметр не указан (значение ParamСount в этом случае равно нулю), то присвоением значения свойству Caption метки Label5 выводится сообщение: «Не задан файл вопросов теста» и свойству Tag кнопки Buttonl присваивается значение 2 (Buttonl.Tag:=2;). Если параметр задан, то открывается файл теста.

Программа тестирования получает имя файла теста как результат функции ParamStr (1). Реализация программы предполагает, что если имя файла теста задано без указания пути доступа к нему, то файл теста и файлы с иллюстрациями находятся в том же каталоге, что и программа тестирования. Если путь доступа указан, то файлы с иллюстрациями должны находиться в том же каталоге, что и файл теста. Такой подход позволяет сгруппировать все файлы одного теста в одном каталоге.

Открывается файл теста обычным образом. Сначала обращением к процедуре AssignFile имя файла связывается с файловой переменной, а затем вызывается инструкция открытия файла для чтения.

После успешного открытия файла вызывается процедура infо которая считывает из файла информацию о тесте и выводит ее в форму присваиванием прочитанного текста свойству Caption поля метки Label5.

Затем вызывается процедура Get Level, которая считывает из файла теста информацию об уровнях оценки. Эта процедура заполняет массивы level и mes.

После вывода информационного сообщения программа ждет, когда пользователь нажмет кнопку "Начать" (Button1).

Командная кнопка Button1 используется для:

·     аварийного завершения работы приложения (в случае, если не задано имя файла теста);

·     начала тестирования (после прочтения информационного сообщения);

·     перехода к следующему вопросу (после выбора одного из ответов);

·     завершения работы программы (после прочтения результатов тестирования).

Свойство Tag кнопки Button1, используется для идентификации текущего состояния формы и выбора действия при нажатии кнопки Button1.

После вывода информации о тесте значение свойства Tag кнопки Button1 равно нулю. Поэтому в результате первого нажатия кнопки Button1 выполняется та часть программы, которая обеспечивает:

·     вывод первого вопроса;

·     замену текста, находящегося на командной кнопке (свойство caption с Начать на Дальше;

·     установку невидимого служебного переключателя RadioButton5   в выбранное состояние.

Кроме того, присваиванием значения False свойству Enabled кнопка Button1 делается недоступной, тем самым блокируется переход к следующему вопросу до тех пор, пока не будет выбран один из ответов. Значению свойства

Button1.Tag присваивается единица, тем самым выполняется подготовка к обработке следующего нажатия кнопки Button1.

После выбора ответа и нажатия кнопки Дальше (Button1) (в этом случае значение свойства Button1.Tag равно единице) к набранной сумме баллов добавляется количество баллов за выбранный ответ. Затем, если конец файла не достигнут, вызывается процедура вывода очередного вопроса. Если конец файла достигнут, то сначала закрывается файл теста, текст на кнопке Button1 изменяется на Выход, а значение Button1.Tag устанавливается на 2. Затем посредством процедуры itog выводятся результаты тестирования.

Если значение Button1.Tag равно двум, то применением метода close к форме Form1 закрывается окно программы, в результате чего программа завершает работу.

Вывод вопроса и альтернативных ответов выполняет процедура voprosToScr. Сначала процедура увеличивает счетчик вопросов vopros и присвоением значения свойству формы Caption выводит номер текущего вопроса в заголовок окна. Затем процедура читает строки из файла теста до тех пор, пока первым символом очередной прочитанной строки не будет точка или "обратная наклонная черта".

После вывода текста вопроса делается проверка, какой символ используется в качестве признака конца вопроса. Если обратная наклонная черта, что свидетельствует о том, что к вопросу есть иллюстрация, то свойству Form1.image1.Tag присваивается единица и из прочитанной строки выделяется имя файла иллюстрации.

Загрузка иллюстрации осуществляется применением метода LoadFromFile к свойству image1.Picture. Однако после загрузки иллюстрация на экране не появляется, т. к. значение свойства image1.visible равно False.

После считывания иллюстрации процедура считывает вопросы. После обработки последнего вопроса, форма переходит к разделу оценок. Так же на форме имеется компонент Gauge1, который предназначен для визуального вывода информации о количестве правильных ответов. Используя процедуру Form1.gauge1.progress:=integer мы можем задать необходимое визуальное отображение числа  баллов за ответы. Для этого нам надо объявить переменную, которая бы при подсчёте баллов автоматически отображалась на этой компоненте. Этой переменной будет summa. Итак, просто пропишем значения суммы (количества баллов) и действия для отображения баллов:

if summa=10 then

      Form1.gauge1.progress:=100;

      if summa=9 then

      Form1.Gauge1.Progress:=90;

      if summa=8 then

      Form1.gauge1.progress:=80;

      if summa=7 then

      Form1.gauge1.progress:=70;

      if summa=6 then

      Form1.gauge1.progress:=60;

                   if summa=5 then

                   Form1.gauge1.progress:=50;

                   if summa=4 then

                   Form1.gauge1.progress:=40;

                   if summa=3 then

                   Form1.gauge1.progress:=30;

                    if summa=2 then

                    Form1.gauge1.progress:=20;

                     if summa=1 then

                     Form1.gauge1.progress:=10;

                     if summa=0 then

                     Form1.gauge1.progress:=0;

End;

Для сохранения результатов тестирования был использован компонент Memo, который был связан с компонентом savedialog1. Т.е. при выводе результатов тестирования данные из компонента Label5 помещались в Memo и, затем, их можно было сохранить, для этого используется следующие операторы:

savedialog1.Execute;    // сохранение данных

memo1.Lines.SaveToFile(savedialog1.FileName);

Компонент Memo сделан не визуальным. В конце теста предлагается сохранить результат, осуществляется это посредством выбора из главного меню вкладки Файл/Сохранить. Общий вид программы можно видеть на рис.5, а полный листинг программы в приложении 1.

Страницы: 1, 2, 3, 4, 5


Новости


Быстрый поиск

Группа вКонтакте: новости

Пока нет

Новости в Twitter и Facebook

                   

Новости

© 2010.