Этот модуль предназначен для сохранения вида дисплея с возможностью
последующего его восстановления.Если вы намерены только использовать его
то переходите сразу к строке #60;
Если Вы хотите добавить новый объект, расширяющий возможности модуля,
то Вы должны придерживаться следующих правил(предполагается, что Вы знакомы
с принципами объектного программирования) :
1) Новый объект должен содержать хотя бы 4 правила -
Конструктор Init;
Деструктор Done;Virtual;
Метод Save;virtual , сохраняющий вид дисплея
Метод Restore;Virtual , восстанавливающий вид дисплея
2) Конструктор должен выполнять следующее -
вызвать конструктор родителя - Inherited Init;
после этого переменные содержат : OrigMode - номер текущего видеорежима
Page - номер видимой страницы
CursorPosition(.X;.Y) - Координаты курсора
CursorSize(.X;.Y) - Размер курсора
Columns - число символов в строке(колонок)
выполнить необходимую инициализацию собственного объекта, в частности
проверить значение OrigMode и соответственно установить внутреннюю
переменную - флаг, сигнализирующий об использовании этого объекта(напр.If ... then MyFlag:=True;)
3) Метод Save должен выполнять следующее -
проверить значение внутреннего флага - Saved (If not Saved then begin ... end)
проверить значение собственного флага (If Myflag and(not Saved)then begin ... end)
если он установлен то считать содержимое экрана в некую область памяти,
которую затем сохранить в буфере;
для этого следует использовать внутренние методы :
Procedure GetBuf (var Han:Bufhandle;Size:word);virtual;
Procedure FreeBuf(var Han:Bufhandle);virtual;
Function MoveToBuf(var Source;var Han:Bufhandle;Count:word):boolean;virtual;
Function ReadFromBuf(var Dest;var Han:Bufhandle;Count:word):boolean;virtual;
GetBuf выделяет буфер размера Size и возвращает
|