TURBO PASCAL |
Новости
|
1.3.4. Тестовая программаВ следующей программе иллюстрируется использование средств модуля F_GrText. Программа вначале выводит несколько раз одно и то же сообщение с помощью процедуры OutString. Для каждого символа сообщения устанавливается свой угол наклона, плавно меняющийся от 0 до 30 градусов и обратно (см. рис. 1,5). Текстовый ввод/вывод в графическом режиме 41
Рис. 1.5. Экран, создаваемый тестовой программой Затем с помощью вызова SetWindow в верхней части экрана создается текстовое окно, в которое выводятся начальные строки PAS—файла с текстом программы. После нажатия на любую клавишу текстовое окно очищается и программа реализует ввод произвольной текстовой строки. После завершения ввода содержимое окна сдвигается вниз и программа ожидает нажатия на любую клавишу. ^+——---——————————————————————+ ¦ Пример использования модуля F_GrText I +-__------_-----------------------------+^ Uses CRT,Graph,F_GrText; const DX = 50; {Ширина текстового окна} DY = 11; {Высота текстового окна} tl: String='Лучшая в мире система программирования'; t2: String='Турбо Паскаль '; Grad = Pi/18O; {Перевод градус/радиан} var D,R,E: Integer; Angle: Integer; {Угол поворота букв} xl,yl,x2,y2: Integer; {Координаты окон} F: File; {Файл со шрифтом} FT: Text; {Файл с текстом программы} N: Integer; Р: Pointer; (Указатель на шрифт} S: String; k,H: Byte; C: Char; begin {Инициируем графику} D := Detect; InitGraph(D,R, ' ') ; E := GraphResult; if EOgrOk then begin WriteLn(GraphErrorMsg(E) ) ; Halt end; {Выводим текст процедурой OutString} if RegisterChrFile('trip.chr')>0 then begin yl := succ(GetMaxY) div 20; xl := 12*yl; x2 := Length (tl) ; y2 := GetMaxY-2*yl; while xl<y2 do begin MoveTo(O,xl) ; for k := 1 to x2 do begin Angle := Round(30*sin(grad*(k*360/x2))); OutString(tl[k],1,Angle,0.9,1) ; end; inc(xl,yl) end; MoveTo(2*GetMaxX div 7,GetMaxY-3*yl) ; for k := 1 to Length(t2) do OutString(t2[k],1,0,1,1) end; {Выбираем нужный шрифт} case D of CGA: H := 8; EGA: H := 14; VGA: H := 16; else H := 8; end; {Готовим имя файла, содержащего шрифт} Str(H,S) ; S := '8х'+S+'.fnf; {Имя файла} {Открываем файл со шрифтом} Assign(F,S); Reset(F,1) ; {Резервируем память и грузим шрифт} GetMem(P,FileSize(F) ) ; BlockReacKF^^FileSizefF) ) ; Close(F) ; (Регистрируем шрифт и перехватываем ввод-вывод} SetFont(p,8,H) ; GraphWriteOn; {Создаем текстовое окно} TextColor(Black) ; TextBackGround(White) ; SetWindow ((GetMaxChar-DX) div 2,2,(GetMaxChar+DX) div 2, (GetMaxLine+DY) div 3,DoubleBorder, ' Нажмите любую клавишу ',True,False,False); {Открываем файл с текстом программы} S := copy(ParamStr(0),1,pos('.',ParamStr(0)))+'pas'; Assign(FT,S) ; Reset(FT) ; (Читаем файл и выводим его в окно} for N := 1 to DY do begin ReadLn(FT,S) ; WriteLn(S) end; Close(FT) ; {Ждем действий пользователя} while not KeyPressed do; while KeyPressed do С := ReadKey; {Очищаем текстовое окно и вводим строку} CIrScr; WriteLn('Введите произвольный текст') ; ReadLn(S) ; {Сдвигаем ввод вниз окна и ждем} Scrolling(-DY div 2) ; WriteLn('Текст смещен на ',-DY div 2,' строк'); WriteLn('Нажмите любую клавишу...'); С := ReadKey; {Завершаем работу программы} GraphWriteOff; CloseGraph end.
|
(с)Все права защищены По всем интересующим вопросам прошу писать на электронный адрес |