|
|||
Скачать VCRT - Замена CRT с поддержкой графики
12.05.1993 Модуль VCRTМодуль представляет собой модифицированный стандартный модуль CRT для Turbo Pascal 6.0,5.5 в который не добавлено практически ни одной новой функции, но работа некоторых весьма стандартных функций изменена так, как это казалось автору более логичным. Кроме того ряд функций, бывших внутренними выведен в интерфейс. Изменение первое - драйвер текстовых файлов : 1. В графических режимах CGA 320x200, EGA и VGA атрибуты символов обрабатываются так же как и в текстовых. 2. Процедуры READ и READLN допускают редактирование с помощью стрелок, клавиш Home, End, BackSpace и Delete. 3. Процедуры READ и Readln в графических режимах эмулируют курсор Изменуние второе: Процедуры InsLine, DelLine, ClrEol, ClrScr обрабатывают атрибуты во всех графических режимах Изменение третье: Добавлены процедуры ReInitCrt - инициализация внутренних переменных необходимо вызывать после изменения режима экрана не средствами VCRT для корректной работы. ReadKeyWord - возвращает двухбайтовый код нажатой клавиши Старший байт - скэнкод. Beep - выдает стандартный звуковой сигнал. Эквивалент Write(#7) Изменение четвертое: Переменная DirectVideo инициализируется в False, если текущий режим графический. Ограничения: 1. Вывод на экран всегда через Bios, независимо от значения DirectVideo 2. Процедура Readln не позволяет вводить строки, превышающие расстояние до правой границы экрана. Модуль VCRTEXTСодержит расширения CRT, весьма полезные и отчасти повторяющие процедуры tpCrt и opCrt (Copyright by TurboPower Software), но, как и VCRT, корректно работающие в графике. Procedure FrameWindow(X1,Y1,X2,Y2) - рисует рамку. Символы задаются в переменной Frame. Определены константны SingleFrame и DoubleFrame; Procedure SaveWindow(X1,y1,X2,y2:byte;var SavePtr:Pointer); Работает только в текстовом режиме Динамическую память для буфера окна выделяет сама Procedure RestoreWindow(X1,Y1:Byte;Var SavePtr:Pointer); Восстанавливает окно, сохраненное SaveWindow даже и в граф. режимах Procedure DisposeWindow(var SavePtr:Pointer); Освобождает буфер окна Procedure Inverse(Count:Byte); в текстовых режимах заменаяет атрибуты Count символов слева от курсора на атрибут, хранящийся в переменной InverseAttr, в гра- фике делает XOR c ним. В режиме CGA монохром просто инвертирует символы не думая об атрибутах Function ReadScreen(X,Y:Byte):Char; Читает символ с 0 страницы (через BIOS) Function ReadAttr(X,Y:Byte):Byte;{Works in text mode only} Читает атрибут (только в текстовом режиме) Далее пошли инструменты более высокого уровня (пока не реализованы, а потому и не описаны. Три варианта меню. 1. Меню с произвольным расположением строк на экране {Clears all internal data for menu} Procedure ClearMenu; {Adds string to menu} Procedure Prompt(S:String;Row,Col:Byte); {Allows selection from ClipperLike menu and returns Choice number or 0 if Escaped} Function Menu:Integer; 2 Вертикальное меню в текущем окне (должно быть заполнено до вызова процедуры) Function VertMenu:Integer; 3. Прокручиваемое меню в текущем окне Function LongMenu(ItemFuns:MenuItemType):Integer; | |||
© 2009–2024 Russian Pascal Developer Network.
Техническая площадка: ISBIZ Хостинг |