Delphi. Учимся на примерах | страница 50



Обработчик события OnClick для пункта меню Игра→Выход:

>procedure TForm1.N4Click(Sender: TObject);

>begin

> Halt; //выход из программы

>end;

Теперь обработаем щелчок мышью на панели p1:

>procedure TForm1.p1Click(Sender: TObject);

>begin

> Label1.Caption:= 'Второй вопрос:';

> verno(); //принимаем вариант ответа

> p1.Visible:= False; //убираем первую панель

> р2.Visible:=True; //активизируем вторую панель

> vopr:= Random(4) +1; //выбираем случайный вариант ответа

> vars(vopr); //задаем вопрос

>end;

Здесь мы вначале изменяем заголовок на "Второй вопрос:", после чего принимаем вариант ответа, выбранный пользователем, вызывая процедуру verno.

Затем готовим форму ко второму вопросу: прячем первую панель и выводим вторую. Вызываем процедуру vars, которая выбирает вопрос и отображает его вместе с вариантами ответа.

Обработаем щелчок мышью на второй панели:

>procedure TForm1.p2Click(Sender: TObject);

>begin

> Label1.Caption:= 'Третий вопрос:';

> verno();

> p2.Visible:= False;

> p3.Visible:= True;

> vopr:= Random(4) + 1;

> vars(vopr);

>end;

Здесь происходит то же самое, что и для панели p1, только надпись метки принимает значение "Третий вопрос", мы прячем вторую "кнопку" и активизируем третью для следующего вопроса.

Аналогичные обработчики события OnClick создаем для третьей и четвертой панелей:

>procedure TForm1.p3Click(Sender: TObject);

>begin

> Label1.Caption:= 'Четвертый вопрос:';

> verno();

> р3.Visible:= False;

> p4.Visible:= True;

> vopr:= Random(4) + 1;

> vars(vopr);

>end;


>procedure TForm1.p4Click(Sender: TObject);

>begin

> Label1.Caption:= 'Пятый вопрос:';

> verno();

> p4.Visible:= False;

> p5.Visible:= True;

> vopr:= Random(4) + 1;

> vars(vopr);

>end;

Для пятой (последней) панели обработчик события OnClick будет выглядеть несколько иначе:

>procedure TForm1.p5Click(Sender: TObject);

>begin

> //проверяем правильность ответа на последний вопрос

> verno() ;

> //узнаем, сколько баллов набрал пользователь

> ss:= IntToStr(balls);

> //делаем почти все компоненты невидимыми

> Memo1.Visible:= False;

> р5.Visible:= False;

> RadioGroup1.Visible:= False;

> Label1.Visible:= False;

> an1.Visible:= False;

> an2.Visible:= False;

> an3.Visible:= False;

> an4.Visible:= False;

> Label2.Visible:=True;//показываем метку с результатом

> Label2.Align:= alClient;//растягиваем ее на всю форму

> //Отображаем процент правильных ответов

> Label2.Caption:= 'Правильных ответов' + IntToStr(balls*(100 div 5))+'%';

>end;

После проверки правильности ответа на последний вопрос, мы прячем почти все компоненты на форме, оставляя видимой только метку Label2 для вывода результата и меню, чтобы можно было продолжить работу с программой. С помощью метки мы отображаем процент правильных ответов пользователя по формуле: "количество правильных ответов * (100 / количество заданных вопросов)". Пример отображения результата теста представлен на рис. 13.3.