Текстовый ввод/вывод в графическом режиме ЗА
После вызова GraphWriteOn стандартные процедуры Read/ReadLn и Write/ WriteLn будут использовать средства модуля F_GrText.
При вводе это означает эхоповтор вводимых символов в текстовом окне с учетом установленного цвета символов и фона. В этот момент на экране появляется текстовый курсор, а пользователю становятся доступны следующие средства редактирования ввода:
• забой символа слева от курсора клавишей Backspase;
• перевод курсора к началу строки ввода — клавиша Ноте;
• перевод в конец строки ввода — клавиша End;
• перевод на символ влево или вправо — клавишами смещения курсора;
• забой символа, на который показывает курсор — клавишей Delete (Del);
• переход к режиму замены или возврат к режиму вставки — клавишей Insert (Ins); признаком работы в режиме замены являются увеличенные размеры курсора.
Любой, ввод должен завершаться нажатием на Enter или Esc, При нажатии на Enter введенная строка копируется в буфер BufPtr', длина строки помещается в BufEnd, и на экране осуществляется перевод курсора в начало следующей строки. Замечу, что «пустой» ввод соответствует BufEnd=0, что интерпретируется процедурами Read и ReadLn как нажатие CtrI—Z (конец файла Input). Чтобы исключить аварийное завершение работы программы (а именно так реагирует Турбо Паскаль на этот символ), в случае «пустого» ввода в буфер помещается символ #32 («Пробел»). При завершении ввода по клавише Esc в BufPtr также помещается единственный символ «Пробел» и дополнительно глобальная переменная EscFlag в интерфейсной части модуля F_GrText получает значение True (при выходе по Enter она имеет значение False). Чтобы определить факт нажатия клавиши Esc, программа пользователя может проанализировать состояние переменной EscFlag.
При выводе символов процедура GraphWrite тестирует аппаратуру дисплея и осуществляет прямой доступ к видеопамяти, если используются адаптеры EGA или VGA. Как показывает практика, прямой доступ к памяти EGA/ VGA— адаптеров увеличивает скорость формирования символов на экране в 8...10 раз, в то время как для CGA— адаптера в случае стандартного шрифта 8х8 он не дает существенного выигрыша в скорости (и не используется в модуле). Вы можете запретить прямой доступ к видеопамяти EGA/VGA, если поместите в глобальную переменную AppHandle значение False (по умолчанию она имеет значение True).
Процедура GraphWriteOff. Восстанавливает стандартное назначение файлов Input и Output, т.е. ликвидирует действие процедуры GraphWtriteOn. Заголовок:
Procedure GraphWriteOff;
Процедура SetFont. Регистрирует загруженный матричный шрифг ддя последующего использования его в процедурах ввода/вывода. Заголовок.