ну на тебе набросок кода.
1. Сами вопросы. Я сделал запись для описания вопроса и пример для 2х вопросов. Имя картинки задается без пути, только имя файла, сами картинки должны "лежать" рядом с исполняемым модулем:
Код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | unit Unit2;
interface
type
TTest = record
Question : String ;
Image : String ;
Answers : Array [ 0..2 ] Of String ;
CorrectAnswer : Integer ;
end ;
const
Tests : Array [ 1..2 ] Of TTest =
(
(Question : 'Вопрос 1' ;
Image : 'image1.jpg' ;
Answers : ( 'Ответ 1-1' , 'Ответ 1-2' , 'Ответ 1-3' );
CorrectAnswer : 0 ),
(Question : 'Вопрос 2' ;
Image : 'image2.jpg' ;
Answers : ( 'Ответ 2-1' , 'Ответ 2-2' , 'Ответ 2-3' );
CorrectAnswer : 2 )
);
implementation
end .
|
Надеюсь, как добавить вопросы сообразишь сам.
2. Теперь собственно обработчик. На форме лежат: метка (для текста вопроса), картинка (для, соотв, картинки) и радиогруппа (для ответов). Весь код:
Код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 | unit Unit1;
interface
uses
Winapi . Windows, Winapi . Messages, System . SysUtils, System . Variants, System . Classes, Vcl . Graphics,
Vcl . Controls, Vcl . Forms, Vcl . Dialogs, Vcl . StdCtrls, Vcl . ExtCtrls;
type
TForm1 = class (TForm)
RadioGroup1: TRadioGroup;
Button1: TButton;
Label1: TLabel;
Image1: TImage;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
n : Integer ;
c : Integer ;
public
end ;
var
Form1: TForm1;
implementation
{$R *.dfm}
uses Unit2;
procedure TForm1 . Button1Click(Sender: TObject);
var
I : Integer ;
ImgName : String ;
begin
If n >= Low(Tests) Then
Begin
If RadioGroup1 . ItemIndex < 0 Then
Begin
ShowMessage( 'Выберите правильный вариант.' );
Exit;
End ;
If RadioGroup1 . ItemIndex = Tests[n].CorrectAnswer Then Inc(c);
End ;
Inc(n);
Label1 . Caption := '' ;
Image1 . Picture . Graphic := Nil ;
RadioGroup1 . Items . Clear;
If n > High(Tests)
Then
Begin
ShowMessage(Format( 'Тест окончен. Кол-во правильных ответов: %d из %d' ,[c,Length(Tests)]));
c := 0 ;
n := Low(Tests)- 1 ;
End
Else
Begin
Label1 . Caption := Tests[n].Question;
ImgName := IncludeTrailingPathDelimiter(ExtractFilePath(Application . ExeName)) + Tests[n].Image;
If FileExists(ImgName) Then Image1 . Picture . LoadFromFile(ImgName);
For I := Low(Tests[n].Answers) To High(Tests[n].Answers) Do
RadioGroup1 . Items . Add(Tests[n].Answers[i]);
End ;
end ;
procedure TForm1 . FormCreate(Sender: TObject);
begin
c := 0 ;
n := Low(Tests)- 1 ;
Button1Click(Sender);
end ;
end .
|
Всего 2 обработчика - при создании формы первичная инициализация переменных и показ первого вопроса. Если картинки к вопросу нет, то просто укажи любой текст для ее имени, только что бы такого файла небыло.
При добавлении вопросов КОД МЕНЯТЬ НЕ НАДО, он корректно обработает любое кол-во вопросов.
ЗЫ. Загрузку картинок не проверял, но должно все работать.