5. Подія створення форми = формування
тестового бланку питань FormCreate
assignfile(f,'questions.txt');
файл з питаннями
reset(f);
i:=1;
while not eof(f) do
begin
readln(f,questions[i].q);
текст питання
for k := 0 to 4 do
readln(f,questions[i].ans[k]);
варіанти відповідей
readln(f,questions[i].correct) ;
правильна відповідь (№)
i:=i+1;
i – номер питання
end;
closefile(f);
n:=i-1;
кількість запитань тесту
7. Кнопка Вперед
questions[i].user:= inttostr(radiogroup1.itemindex+1) ;
фіксується відповідь користувача
i:=i+1;
radiogroup1.Caption:=questions[i].q;
for k := 0 to 4 do
radiogroup1.Items.Strings[k]:=questions[i].ans[k];
if i= n then button1.Visible:=false else button1.Visible:=true;
якщо це останнє питання, то сховати Вперед
if i=1 then button2.Visible:=false else button2.Visible:=true;
якщо це перше питання, то сховати Назад
8. Кнопка Назад
questions[i].user:= inttostr(radiogroup1.itemindex+1) ;
фіксується відповідь користувача
i:=i-1;
radiogroup1.Caption:=questions[i].q;
for k := 0 to 4 do
radiogroup1.Items.Strings[k]:=questions[i].ans[k];
if i= n then button1.Visible:=false else button1.Visible:=true;
якщо це останнє питання, то сховати Вперед
if i=1 then button2.Visible:=false else button2.Visible:=true;
якщо це перше питання, то сховати Назад
9. Розрахунок балу
bal:=0;
questions[i].user:= inttostr(radiogroup1.itemindex+1) ;
запис останньої відповіді
for k := 1 to n do
if questions[k].user=questions[k].correct then bal:=bal+1;
якщо відповідь користувача = номеру
правильної відповіді
Label1.Visible:=true;
Label1.Caption:= inttostr(bal); напис виведення балів
замість напису можна генерувати вікно
ShowMessage(inttostr(bal));
10. Випадкове перемішування
варіантів відповідей
RadioGroup1.Items.Exchange(Random(RadioGroup1.Items.Count),
Random(RadioGroup1.Items.Count));
Поміняти місцями два випадкові елементи групи
questions[i].correct:=questions[i].ans[strtoint(questions[i].correct)-1];
Масив правильних відповідей має містити не номери
відповідей, а їх тексти
questions[i].user:= RadioGroup1.Items[RadioGroup1.ItemIndex];
Фіксація відповіді користувача – текстом
for k := 0 to 4 do
if questions[i].user=RadioGroup1.Items[k] then
RadioGroup1.ItemIndex:=k;
Якщо вже була відповідь – її показано при переході до питання