buf:=' '; repeat
readln(f,s); if s[l]<>'.'
then buf:=buf+s+' ';
until s[l] ='.';
Form1.Labels.caption:=buf;
end;
// прочитать информацию об оценках за тест
Procedure GetLevel(var f:TextFile);
var
i:integer; buf:string;
begin // заполняем значения глобальных массивов i:=1;
Repeat
readln(f,buf); if buf[1] <> '.' then
begin mes[i]:=buf; readln(f,level[i]); i:=i+1;
end;
until buf[1]='.';
end;
// масштабирование иллюстрации
Procedure ScalePicture;
Var
w,h:integer; // максимально допустимые размеры картинки
scaleX:real; // коэф. масштабирования по X
scaleY:real; // коэф. масштабирования по Y
scale:real; // общий коэф. масштабирования
i:integer; begin
// вычислить максимально допустимые размеры картинки
w:=Form1.ClientWidth-Form1.Labels.Left;
h:=Form1.ClientHeight
- Form1.Panel1.Height -5
- Form1.Label5.Top
- Forml.Label5.Height - 5;
for i:=1 to N_ANSWERS do
if answer[i].Caption <> ''
then h:=h-answer[i].Height-5;
// здесь определена максимально допустимая величина иллюстрации
// определить масштаб
if w>Form1.Image1.Picture.Width
then scaleX:=1
else scaleX:=w/Forml.Image1.Picture.Width;
if h>Forml.Image1.Picture.Height
then scaleY:=1
else scaleY:=h/Form1.Image1.Picture.Height;
if ScaleYOcaleX
then scale:=scaleY
else scale:=scaleX; // здесь масштаб определен
Form1.Image1.Top:=
Form1.Label5.Top+Forml.LabelS.Height+5;
Form1.Image1.Left:=Form1.Label5.Left;
|
|
Form1.Image1.Width:=
Round(Form1.Image1.Picture.Width*scale);
Form1.Image1.Height:=
Round(Form1.Image1.Picture.Height*scale)
Form1.Label5.Visible:=TRUE;
end;
// вывод вопроса на экран
Procedure VoprosToScr(var f:TextFile;
frm:TForm1;var vopros:integer),
Var
i:integer; code:integer; s,buf :string;
ifn:string; // файл иллюстрации
Begin
vopros:=vopros+1;
str(vopros:3,s);
frm. caption: ='Вопрос' + s;
// выведем текст вопроса
buf: = ";
Repeat
readln(f, s);
if (s[l] <> '.') and (s[l] <> '\')
then buf:=buf+s+' ';
until (s[l] ='.'} or (s[l] = '\');
frm.Labels.caption:=buf;
if s[l] = '\'
then // к вопросу есть иллюстрация
Begin
frm.Image1.Tag:=1; ifn:=copy(s,2,length(s));
Try
frm.Image1.Picture.LoadFromFile(ifn); except
on E:EFOpenError do
frm.tag:=0; end //
Try
End
else frm. Image1.Tag: =0;
// читаем варианты, ответов
for i:=1 to N_ANSWERS do begin
answer[i].caption:='';
answer[i].Width:=frm.ClientWidth-Form1.Label5.Left-5;
end; i:=l;
Repeat
buf: = ";
repeat // читаем текст варианта ответа
readln(f,s);
if (s[l]<>'.') and (s[1] <> ',')
then buf:=buf+s+' ';
until (s[1]=',') or (s[l]='.');
// прочитан альтернативный ответ
val (s[2],score[i],code);
answer[i].caption:=buf;
i:=i+l;
until s [1] = '. '; // здесь прочитана иллюстрация и альтернативные ответы
if Form1.Image1.Tag =1 // есть иллюстрация к вопросу?
then begin ScalePicture;
Forml.Image1.Visible:=TRUE;
end;
// вывод альтернативных ответов
i:=1;
while (answer[i].caption <> ") and (i <= N_ANSWERS) do
Begin
if i = 1 then
if frm.Image1.Tag =1
then answer[1].top:=frm.Image1.Top+frm.Image1.Height+5
else answer[i].top:=frm.Label5.Top+frm.Label5.Height+5
Else
answer [i]. top:=answer [i-1].
top+ answer [i-1]. height+5;
selector[i]. top:=answer [i].
top; selectorfi],visible:=TRUE;
answer [i]. visible: =TRUE; i:=i+l;
end;
end;
{$R *.DFM}
procedure TForml. FormActivate (Sender: TOb j ect);
Begin
ResetForm (Forml);
if ParamCount = 0 then begin
Label3. font. color: =clRed;
Label5. caption: = 'He задан файл вопросов теста.1;
Buttonl. caption: = ' Ok '; Buttonl.tag:=2;
Buttonl. Enabled: =TRUE