Private

{ Private declarations }

QuestionList:TList;

Question, QuestionNumber, FalseNumber:Integer; FileName:String;

Разберём, для чего нужны эти переменные:

QuestionList – здесь будет храниться список вопросов, как и у редактора вопросов.

Question – будет отображать текущий вопрос, на который отвечает испытуемый.

QuestionNumber – здесь мы будем хранить количество вопросов, на которые уже даны ответы. Нам же надо иметь счётчик, после которого тест должен закончиться.

FalseNumber – количество неправильных ответов.

Теперь создадим обработчик события OnShow для главной формы. В этом обработчике нужно инициализировать список QuestionList:

procedure TTestForm.FormShow(Sender: TObject); begin QuestionList:=TList.Create; end;

По событию OnDestroy мы должны уничтожить этот объект:

procedure TTestForm.FormDestroy(Sender: TObject); begin QuestionList.Free; end;

Теперь для кнопки открытия пишем следующий код:

 

procedure TTestForm.OpenButtonClick(Sender: TObject);

begin //Показать окно открытия файла if not OpenDialog1.Execute then exit; FileName:=OpenDialog1.Filename; RunButton.Enabled:=true;

end;

В первой строке я отображаю окно открытия файла. Если пользователь нажал на кнопку «Отмена», то происходит выход из процедуры. Иначе, в переменной FileName сохраняется имя выбранного файла. В принципе, этого можно было и не делать, потому что имя файла хоть как останется в свойстве OpenDialog1.Filename, но я всё же завёл отдельную переменную, и буду хранить имя файла там.

В последней строке я делаю кнопку «Запустить» RunButton доступной. Кстати, на форме эта кнопка должна быть не доступной, чтобы при старте программы, пользователь не мог нажать кнопку «Запустить», пока не выберет файл.

Теперь пишем обработчик события OnClick для кнопки «Запустить»: