ReadLn(f,Str_F); // читаем количество баллов за этот ответ
Button1.Tag:=StrToInt(Str_F); // присваиваем пользовательскому свойству Tag балл за этот ответ компоненту Button1
// ЧИТАЕМ ВТОРОЙ ОТВЕТ
ReadLn(f,Str_F);
Label3.Caption:=Str_F;
ReadLn(f,Str_F);
Button2.Tag:=StrToInt(Str_F);
// ЧИТАЕМ ТРЕТИЙ ОТВЕТ
ReadLn(f,Str_F);
Label4.Caption:=Str_F;
ReadLn(f,Str_F);
Button3.Tag:=StrToInt(Str_F);
// ЧИТАЕМ ЧЕТВЕРТЫЙ ОТВЕТ
ReadLn(f,Str_F);
Label5.Caption:=Str_F;
ReadLn(f,Str_F);
Button4.Tag:=StrToInt(Str_F);
end;
Возможно, вы еще не встречались со свойством Tag для компонентов. Это, можно сказать, пользовательское свойство. Оно имеет тип Integer, и ни на что конкретно в программе не влияет. Программист может его использовать в собственных целях, что иногда уменьшает количество объявляемых переменных в программе. Еще бывает удобно, когда компонент имеет в свойстве Tag какое-нибудь служебное число, как в нашем случае.
Создадим обработчик события для кнопок OnClick. Для всех кнопок это будет одна процедура и создается она стандартным способом, выбрав в инспекторе объектов компонент Button1, перейдя на страницу Events и щелкнув по полю OnClick, или можно дважды щелкнуть по самой кнопке Button1. Вот текст процедуры:
procedure TForm1.Button1Click(Sender: TObject);
Var i: Integer; // временная числовая переменная для выявления балла за отвеченный вопрос
s1: String; // временная переменная первого результата теста
p11,p12: Integer; // цифровой промежуток первого результата теста (минимальное число и максимальное)
s2: String;
p21,p22: Integer;
s3: String;
p31,p32: Integer;
s4: String;
p41,p42: Integer;
begin
i:=0; // сброс переменной
if Sender=Button1 then i:=Button1.Tag; // если была нажата кнопка Button1, то в i занести значение кол-ва баллов за этот ответ
if Sender=Button2 then i:=Button2.Tag;
if Sender=Button3 then i:=Button3.Tag;
if Sender=Button4 then i:=Button4.Tag;
QUser:=QUser+i; // увеличение общего количества баллов
if QCurrent=QCount then //если количество вопросов исчерпано, то