Итак в последней — четвертой части, посвященной разработки тестов с помощью типизированных файлов в среде разработки Delphi, узнали как можно использовать в своих тестах различные форматы файлов. А вообще, чтобы вспомнить все части, что мы прошли по созданию тестов, достаточно нажать на данную ссылку. Мы уже прошли
- создание тестов (создание файлов, добавления сколь угодно ответов)
- открытие тестов (то есть их прохождение)
- определение правильности выбора вариантов ответа
- использование файлов в своих тестах разных расширений
В данной статье мы рассмотрим первую часть по редактированию тестов. То есть как нам открыть (подготовить) наш тест для дальнейшего его редактирования. То есть мы будем выгружать ответы и они уже будут выделятся те, которые мы указали правильными при составлении этих ответов и вопросов. Ну а в следующей серии статей по созданию тестов, я расскажу как отредактировать и сохранить изменения в данных тестах.
На форме у меня все тоже, единственное, что я добавил еще 2 кнопки
- TButton — 2 шт
Первая кнопка — открывает наш тест, вторая кнопка — переходит к следующему вопросу. Я уже рассказывал как делать выгрузку вопросов из файла, здесь практически тоже самое, только после каждого добавленного ответа нам необходимо сделать проверку является ли он правильным, если да, то тогда мы ставим галочку, что данный ответ правильный, чтобы пользователю при редактировании было видно, что редактировать. На событие OnCLick кнопки открыть тест для редактирования я написал следующий код
procedure TForm1.Button8Click(Sender: TObject);
var
count_o,i,l:integer;
pr_otvet:WideString;
begin
try
if OpenDialog1.Execute then
begin
k:=0;
AssignFile(F,OpenDialog1.FileName);
Reset(F);
Seek(F,cc);
if EOF(F)=True then
exit;
Read(F,Test);
count_o:=Test.count_otv;
pr_otvet:=Test.pr_ot;
for i:=0 to count_o-1 do
begin
seek(F,cc);
Read(F,Test);
Edit1.Text:=Test.Name_v;
CheckListBox1.Items.Add(Test.otv);
if Test.pr_ot<>'' then
CheckListBox1.Checked[StrToInt(Test.pr_ot)]:=True;
inc(cc);
end;
CloseFile(F);
end;
except
on e:Exception do
end;
end;
Как видите мы открываем здесь первый вопрос и к нему все ответы, если данный ответ правильный (а правильным у нас считается тот, в котором мы в поле pr_ot записывали номер правильного ответа) и если этот номер существует, то ставим галочку в ответах на данный номер. На событие OnClick кнопки далее для редактирования я написал следующий код
procedure TForm1.Button7Click(Sender: TObject);
var
counts,i:integer;
begin
Try
CheckListBox1.Items.Clear;
AssignFile(F,OpenDialog1.FileName);
Reset(F);
Seek(F,cc);
if EOF(F)=True then
exit;
Read(F,Test);
counts:=Test.count_otv;
for i:=0 to counts-1 do
begin
Seek(F,cc);
if EOF(F)=True then
exit;
Read(F,Test);
Edit1.Text:=Test.Name_v;
CheckListBox1.Items.Add(Test.otv);
if Test.pr_ot<>'' then
CheckListBox1.Checked[StrToInt(Test.pr_ot)]:=True;
inc(cc);
end;
//CloseFile(F);
except
on e:Exception do
end;
end;
Как видите все тоже самое. Если тест заканчивается мы ничего не делаем, а Вы можете там например вывести сообщение и так далее. В следующей статье про тесты на типизированных файлах, я расскажу как уже отредактировать эти данные.