Иллюстрированный самоучитель по Delphi 7 для начинающих

Текст программы

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

Их в программе три: обработка события onActivate для стартовой формы, обработка события Onclick для командной кнопки Button1 и процедура обработки события onclick – одна, общая для переключателей выбора ответа.

В листинге 15.1 приведен полный текст программы.

Листинг 15.1. Программа тестирования.

unit test1_;
interface
uses
SysUtils, WinTypes, WinProcs, Messages,
Classes, Graphics, Controls, Forms,
Dialogs, StdCTRLs, ExtCTRLs;
type
TForm1 = class (TForm) // вопрос
Label3: TLabel; // альтернативные ответы
Label1: TLabel; Label2: TLabel;
Label3: TLabel; Label4: TLabel;
// переключатели выбора ответа
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
RadioButton3: TRadioButton;
RadioButton4: TRadioButton;
Image1: TImage; // область вывода иллюстрации
Button1: TButton; // кнопка Ok, Дальше
RadioButtonS: TRadioButton; // "служебная" кнопка
Panel1: ТPanel;
procedure FormActivate(Sender: TObject);
procedure ButtonlClick(Sender: TObject};
procedure RadioButtonClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1; // форма
implementation
const
N_LEV=4; // четыре уровня оценки
N_ANS=4; // четыре варианта ответов
var
f:TextFile;
fn:string; // имя файла вопросов
1evel:array[1..N_LEV] of integer;
// сумма, соответствующая уровню
mes:array[1.,N_LEV] of string;
// сообщение, соответствующее уровню
score:array[1..N_ANS] of integer;
// балл за выбор ответа
summa:integer; // набрано очков
vopros:integer; // номер текущего вопроса
n_otv:integer; // число вариантов ответа
otv:integer; // номер выбранного ответа
// вывод начальной информации о тесте
procedure info(var f:TextFile;l:TLabel);
var
s,buf:string; begin
buf: = '';
repeat
readln(f,s); if s[l] <> '.'
then buf: = buf + s+ ' ';
until s[l] ='.'; l.caption: = buf;
end;
// прочитать информацию об оценках за тест
Procedure GetLevel(var f:TextFile);
var
i:integer; buf:string;
begin // заполняем значения глобальных массивов
i: = l;
repeat
readln(f,buf); if buf[1] <> '.' then begin
mes[i]: = buf; readln(f,level[i]);
i: = i+1;
end;
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.