Вход/Регистрация
Delphi. Учимся на примерах
вернуться

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

Шрифт:

Под вопросом будут расположены варианты ответов. Разместите под компонентом Memo1 компонент RadioGroup (группа переключателей) категории Standard и присвойте его свойству Caption значение Варианты ответов:. Разместите на компоненте RadioGroup1 четыре компонента RadioButton (переключатели) категории Standard. Очистите для каждого из них свойство Caption, а свойству Name присвойте значения an1, an2, an3 и an4 соответственно.

В любом месте формы разместите компонент Label, который изначально будет невидимым. Он будет служить для отображения результатов и в последствии будет растянут на всю форму. Установите для него свойства согласно табл. 13.1.

Таблица 13.1. Свойства компонента Label, отображающего результат теста

Свойство Значение Пояснение
Alignment taCenter Выравнивание текста — по центру
Color clBlack Цвет фона — черный
Font.Color clRed Цвет текста — красный
Font.Name Arial Название шрифта
Font.Size 26 Размер шрифта
Font.Style [fsBold] Начертание шрифта — полужирное
Visible False При запуске программы метка невидима

Осуществлять переход к следующему вопросу мы будем с помощью панелей. Разместите под вариантами ответов пять компонентов Panel категории Standard. Для каждой из них присвойте свойству Caption значение Следующий вопрос>>>>>, свойству Color — значение clMaroon, а свойству Font.Color — значение clWhite. Присвойте им имена (свойство Name) p1, р2, p3, р4 и р5. Для того чтобы убрать выпуклость и привести панель к виду стильной кнопки, изменим значение свойства BevelInner на bvRaised, а свойства BevelOuter — на bvLowered. Для всех панелей, кроме p1, присвойте свойству Visible значение False (изначально будет видна только первая панель).

Поскольку в программе будет предусмотрена возможность динамической загрузки базы вопросов/ответов, нам понадобится диалоговое окно открытия файла. Для этого разместим на форме компонент OpenDialog категории Dialogs и присвоим ему имя Open1 (свойство Name). Кроме того, определите в свойстве Filter следующий фильтр: ini-файлы|*.ini|Все файлы|*.*.

Теперь разработаем меню программы. Для этого разместите на форме компонент MainMenu категории Standard и создайте меню в соответствии с рис. 13.1.

⇖ Разработка меню рассматривается в главе 6, "Программа просмотра рисунков".

Рис. 13.1. Меню для программы-теста

Полученная форма должна примерно соответствовать рис. 13.2.

Рис. 13.2. Форма программы-теста

Разработка программного кода

Для начала, объявим все глобальные переменные:

var

 Form1: TForm1;

 i, a, n, balls, vopr: integer; {различные счетчики и переменные для подсчета баллов}

 dir, dir2, ss, zz, yes: string; {путь к файлу с вопросами, к программе и расшифрованной базе}

 win: TIniFile; //переменная для работы с ini-файлами

 mass: array[1..100] of integer; {содержит номера уже заданных вопросы, чтобы они не повторялись}

 f1, f2: file of char; //переменные для работы с файлами

 сор: char; //для работы с каждым символом отдельно

Добавим в раздел uses ссылку на модуль IniFiles, который потребуется для работы с классом TIniFile. Мы также разработаем четыре собственные процедуры. Объявим их как закрытые члены класса формы:

type

TForm1 = class(TForm)

 …

private

 { Private declarations }

 procedure start; //начало теста

 procedure question_select; //выбор вопроса

 procedure vars(var variant: integer); {сортировка и определение правильного варианта ответа}

 procedureverno; {проверка: правильно ли ответил пользователь}

public

 { Public declarations }

  • Читать дальше
  • 1
  • ...
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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