я не могу в тестах создать кнопку назад ... Например прихожу тест и один вопрос решил оставить и пройти следующий...вот надо сделать кнопку назад чтобы вернуться к неотвеченному вопросу....помогите пожалуйста...
Код:
unit MainUnit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ImgList, ComCtrls, ExtCtrls, ToolWin, StdCtrls, CheckLst;
type
PQuestion=^TQuestion;
TQuestion=record
Name: String[255];
ResultCount:Integer;
ResiltText: array[0..10] of String[255];
ResiltValue: array[0..10] of boolean;
end;
TTestForm = class(TForm)
ToolBar1: TToolBar;
OpenButton: TToolButton;
RunButton: TToolButton;
ImageList1: TImageList;
ExitButton: TToolButton;
ToolButton4: TToolButton;
Panel1: TPanel;
NextButton: TButton;
QuestionCheckList: TCheckListBox;
OpenDialog1: TOpenDialog;
QuestionLabel: TStaticText;
Button1: TButton;
procedure OpenButtonClick(Sender: TObject);
procedure ExitButtonClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure RunButtonClick(Sender: TObject);
procedure NextButtonClick(Sender: TObject);
private
{ Private declarations }
QuestionList:TList;
Question, QuestionNumber, FalseNumber:Integer;
FileName:String;
procedure NextQuestion;
procedure LoadFile;
public
{ Public declarations }
end;
var
TestForm: TTestForm;
implementation
uses VhodUnit, NacatTestUnit;
{$R *.dfm}
procedure TTestForm.ExitButtonClick(Sender: TObject);
begin
Close;
end;
procedure TTestForm.OpenButtonClick(Sender: TObject);
begin
//Показать окно открытия файла
if not OpenDialog1.Execute then exit;
FileName:=OpenDialog1.Filename;
RunButton.Enabled:=true;
end;
procedure TTestForm.FormShow(Sender: TObject);
begin
QuestionList:=TList.Create;
end;
procedure TTestForm.FormDestroy(Sender: TObject);
begin
QuestionList.Free;
end;
procedure TTestForm.RunButtonClick(Sender: TObject);
begin
LoadFile;
QuestionNumber:=0;
FalseNumber:=0;
NextButton.Enabled:=true;
NextQuestion;
end;
procedure TTestForm.NextQuestion;
var
i:Integer;
begin
Randomize;
Question:=Random(QuestionList.Count-1);
QuestionLabel.Caption:=PQuestion(QuestionList[Question]).Name;
QuestionCheckList.Items.Clear;
for i:=0 to PQuestion(QuestionList[Question]).ResultCount-1 do
QuestionCheckList.Items.Add(PQuestion(QuestionList[Question]).ResiltText[i]);
Inc(QuestionNumber);
end;
procedure TTestForm.NextButtonClick(Sender: TObject);
var
OK:Boolean;
i:Integer;
begin
OK:=true;
for i:=0 to PQuestion(QuestionList[Question]).ResultCount-1 do
if PQuestion(QuestionList[Question]).ResiltValue[i]<>QuestionCheckList.Checked[i] then
OK:=false;
if OK=false then
Inc(FalseNumber);
QuestionList.Delete(Question);
if QuestionNumber<5 then
NextQuestion
else
begin
Application.MessageBox(PChar('Вы закончили тест с количеством ошибок = '+IntToStr(FalseNumber)), 'Внимание!!!');
NextButton.Enabled:=false;
end;
end;
procedure TTestForm.LoadFile;
var
fs:TFileStream;
i, Count:Integer;
Str:String[5];
ProjectName:String[255];
NewQuest:PQuestion;
begin
QuestionList.Clear;
//Открыть файл для чтения
fs:=TFileStream.Create(FileName, fmOpenRead);
//Перейти в начало файла и прочитать заголовок
fs.Seek(0,soFromBeginning);
fs.read(Str, SizeOf(Str));
//Если заголовок равен тексу "Тест", значит это "вопрос-
//варианты ответов".
if Str='Тест' then
begin
//Прочитать имя проекта
fs.Read(ProjectName, sizeof(ProjectName));
Caption:=ProjectName;
try
//Прочитать количество вопросов
fs.Read(Count, sizeof(Count));
//Запустить цикл чтения вопросов
for i:=0 to Count-1 do
begin
//Создаю новую структуру в памяти для вопроса
NewQuest:=New(PQuestion);
//Читаю структуру
fs.Read(NewQuest^, sizeof(TQuestion));
//Добавляю структуру в контейнер
QuestionList.Add(NewQuest);
end;
finally
//Закрываю файл
fs.Free;
end;
end;
end;
end.
___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.