Процедуры и функции
Функции whereX и WhereY
С помощью этих функций типа Byte можно определить текущие координаты курсора: WhereX возвращает его горизонтальную, a WhereY – вертикальную координаты.
В следующей программе сначала в центре экрана создается окно, которое обводится рамкой, затем в окне выводится таблица из двух колонок.
Uses CRT; const LU =#218;{Левый верхний угол рамки} RU =#191;{Правый верхний угол)} LD =#192;{Левый нижний} RD =#217;{Правый нижний} H =#196;{Горизонтальная черта} V =#179;{Вертикальная черта} X1 =14;{Координаты окна} Y1 =5; X2 =66; Y2 =20; Txt = 'Нажмите клавишу Enter…'; var k: integer; begin ClrScr; {Очищаем экран} {Создаем окно в центре экрана – желтые символы на синем фоне:} TextBackground(Blue); TextColor(Yellow); Window(X1,Y1,X2,У2); ClrScr; {Обводим окно рамкой} Write(LU); {Левый верхний угол} {Горизонтальная линия} for k: = X1+1 to X2-1 do Write(H); Write(RU);{Верхний правый угол} for k: = Y1+1 to Y2-1 do{Вертикальные линии} begin GotoXY(1,k-Y1+1);{Переходим к левой границе} Write(V);{Левая черта} GotoXY(X2-X1+1,WhereY){Правая граница} Write(V){Правая черта} end; Write(LD); {Левый нижний угол} Window(X1,Y1,X2,Y2+1);{Расширяем вниз на одну строку координаты окна, иначе вывод в правый нижний угол вызовет прокрутку окна вверх} GotoXY(2,Y2-Y1+1); {Возвращаем курсор из левого верхнего угла окна на нужное место} {Горизонтальная рамка} for k: = X1+1 to X2-1 do Write(H); Write(RD); {Правый нижний угол} {Определяем внутреннюю часть окна} Window(X1+1,Y1+1,X2-1,Y2-1); {Выводим левый столбец} for k: = Y1+1 to Y2-2 do WriteLn('Левый столбец, строка ',k-Y1);; {Ждем нажатия любой клавиши} Write('Нажмите любую клавишу…'); k: = ord(ReadKey); if k=0 then k: = ord(ReadKey); DelLine; {Стираем приглашение} {Выводим правый столбец} for k: = Y1+1 to Y2-2 do begin GotoXY((X2-X1) div 2,k-Y1); Write('Правый столбец, строка ',k-Y1) end; {Выводим сообщение и ждем нажатия клавиши Enter} GotoXY((X2-X1-Length(Txt)) div 2,Y2-Y1-1); TextColor(White); Write(Txt); ReadLn; {Восстанавливаем стандартный режим} TextMode(CO80) end.