Информационный сервер для программистов: Исходники со всего света. Паскальные исходники со всего света
  Powered by Поисковый сервер Яndex: Найдется ВСЁ!
На Главную Pascal Форум Информер Страны мира
   Экранные Средства    >>    savescrn
   
 
 ASS :) - Automatic Screen Saver  Сергей Варюха 27.06.1996

Pascal units (sources) for saving screen image in text or graphic modes. May be used in order to save the screen when the program starts, and restore when it finishes. Required: Turbo Professional



23k 
 

Этот модуль предназначен для сохранения вида дисплея с возможностью последующего его восстановления.Если вы намерены только использовать его то переходите сразу к строке #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 и возвращает