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.