lab / Создание теста
.pdf
right:=0; wrong:=0; end;
11 Выполним обработку события OnClick нажатия кнопки Button на главной форме
(procedure TMain.ButtonClick(Sender: TObject);): procedure TMain.ButtonClick(Sender: TObject);
begin
if answer.ItemIndex = -1 then showmessage('Вы Не Выбрали Ответ!') else
if not EOF(txt) then begin result.Cells[nq-1,0] := inttostr(nq); if answer.ItemIndex = question.Tag then
begin result.Cells[nq-1,1] := '+'; right:=right+1; end else
begin result.Cells[nq-1,1] := '-'; wrong:=wrong+1; end; nq:=nq+1;
Qnumber.Caption:='Вопрос № '+IntToStr(nq); statusbar1.Panels[1].Text := 'Вопрос № '+inttostr(nq)+' из '+inttostr(total);
nextq;
Button.SetFocus; end
else begin
result.Cells[nq-1,0] := inttostr(nq); if answer.ItemIndex = question.Tag then
begin result.Cells[nq-1,1] := '+'; right:=right+1; end else
begin result.Cells[nq-1,1] := '-'; wrong:=wrong+1; end; panel4.BringToFront;
timer2.Enabled := false;
Nright.Caption := 'Верных Ответов >>> '+inttostr(right); Nwrong.Caption := 'Неверных Ответов >>> '+inttostr(wrong); Nnoans.Caption := 'Не Отвечено >>> 0';
end;
end;
Комментарии к процедуре. Сначала мы выполняем проверку, выбран ли ответ. Если ответ не выбран, то выдается сообщение «Вы не выбрали ответ!» и переход к остальным вопросам не разрешается.
12 Теперь вернемся к ранее созданной процедуре обработки события OnTimer для таймера Timer2 (procedure TMain.Timer2Timer(Sender: TObject);) procedure TMain.Timer2Timer(Sender: TObject);
var time : string; begin
if (sec > 0) then sec:=sec-1 else
if (sec = 0) and (min > 0) then begin
min:=min-1; sec:=59; end
else
if (sec = 0) and (min = 0) and (hour > 0) then begin
hour:=hour-1; min:=59; sec:=59;
end
else if (sec = 0) and (min = 0) and (hour = 0) then begin
result.Cells[nq-1,0] := inttostr(nq); panel4.BringToFront;
PDF created with pdfFactory trial version www.pdffactory.com
timer2.Enabled := false;
for cnt := nq+1 to total do result.Cells[cnt-1,0] := inttostr(cnt); for cnt := nq to total do result.Cells[cnt-1,1] := '0'; Nright.Caption := 'Верных Ответов >>> '+inttostr(right); Nwrong.Caption := 'Неверных Ответов >>> '+inttostr(wrong); Nnoans.Caption := 'Не Отвечено >>> '+inttostr(total+1-nq);
end;
if hour < 10 then time := '0'+inttostr(hour) else time := inttostr(hour); time:=time+':';
if min < 10 then time := time+'0'+inttostr(min) else time := time+inttostr(min);
time:=time+':';
if sec < 10 then time := time+'0'+inttostr(sec) else time := time+inttostr(sec);
Statusbar1.Panels[0].Text := 'Время: '+time; end;
Вместо простого отключения таймера мы прописали проверку на правильность вывода результата.
13 В заключение вернемся к ранее созданной процедуре обработки события
OnShow главной формы (procedure TMain.FormShow(Sender: TObject);): procedure TMain.FormShow(Sender: TObject);
begin blackscreen.Show; main.Show;
blackscreen.Enabled:=false;
statusbar1.Panels[1].Text:='Вопрос № '+inttostr(nq)+' из '+inttostr(total); panel4.BringToFront;
panel3.BringToFront;
panel2.BringToFront;
panel1.BringToFront;
end;
Сохраните проект.
ПОЗДРАВЛЯЕМ ВАС С ЗАВЕРШЕНИЕМ РАБОТЫ НАД ТЕСТЕРОМ J A
PDF created with pdfFactory trial version www.pdffactory.com
ЗАЩИТА «ТЕСТЕРА» ОТ ДОСТУПА ТЕСТИРУЕМЫХ
Можете убрать кнопки выхода или другие декоративные элементы, или добавить свои, одним словом, как хотите!
Кстати для защиты от ламеров можно спрятать иконки рабочего стола и Taskbar. Вот
код:
ShowWindow(FindWindow('Shell_TrayWnd', nil), sw_hide); {спрятать панель задач} ShowWindow(FindWindow('Shell_TrayWnd', nil), sw_show); {показать панель задач}
Для значков придется создать процедуру:
procedure ShowDesktop(const YesNo : boolean); var h : THandle;
begin
h:= FindWindow('ProgMan', nil); h:= GetWindow(h, GW_CHILD);
if YesNo = True then ShowWindow(h,SW_SHOW)
else ShowWindow(h,SW_HIDE); end;
Обращение к ней:
ShowDesktop(False); {Убрать Иконки}
ShowDesktop(False); {Показать Иконки}
Прописав такую защиту, вы лишите тестируемых возможности найти ответы. Ну, по крайней мере, усложните им жизнь! :)
PDF created with pdfFactory trial version www.pdffactory.com
