Показать сообщение отдельно
  #2  
Старый 18.06.2010, 22:15
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,100
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Маньяк!!!
Для тестовой программы тебе надо:
1. Memo - выводить вопрос
2. TRadioGroup - для вывода ответов и выпора пользователя.
3. Массив данных вида "Вопрос, Ответ1..ОтветN, Номер правильного ответа".
4. Цикл по вопросам с подсчетом кол-ва правильных ответов.

Пусть у нас всегда будет 4 варианта ответов, один из которых правильный (простейший вариант):
Код:
type
  TQuestion = record
    Text : String;
    Answers : Array [0..3] Of String;
    RightAnswer : Integer; // 0.. 3
  end;
  
const
  Q : Array [1..10] Of TQuestion =
       ((Text: 'Текст вопроса 1', Answers:('Ответ1','Ответ2','Ответ3','Ответ4'),0), // первый вопрос. и так всего 10 вопросов
        ...);
  
procedure TForm1.btStartClick(Sender : TObject);
begin
  AQuestion := 0;
  QRights := 0;
  btNextClick(Self);
end;

procedure TForm1.btNextClick(Sender : TObject);
var
  I : Integer;
begin
  // Если > 0 то забираем ответ.
  If AQuestion > 0 Then
    If RadioGroup1.ItemIndex = Q[AQuestion].RightAnswer Then Inc(QRights);

  // Если > 10, то тест заеончен - выводим результат
  Inc(AQuestion);
  If AQuestion > 10 Then
    Begin
      Memo1.Lines.Text := '';
      RasioGroup1.Items.Clear;
      ShowMessage('Тест окончен. Правильных ответов ' + IntToStr(QRights));
      Exit;
    End;

  // Выводим след. вопрос
  Memo1.Lines.Text := Q[AQuestion].Text;
  For I := 0 To 3 Do
    RadioGroup1.Items[i] := Q[AQuestion].Answers[i];
  RadioGroup1.ItemIndex := -1;
end;
Ответить с цитированием