Программа Notebook
Описание программы см. гл.15.
Program Notebook; {Программа обслуживает файлы данных "записной книжки". Описание программы см. в гл.15} Uses App, Objects, Menus, Drivers, Views, StdDlg, DOS, Memory, Dialogs; type {Объект TWorkWin создает рамочное окно с полосами скроллинга 'для управления встроенным в него объектом TInterior} PWorkWin =TWorkWin; TWorkWin = object (TWindow) Constructor Init(Bounds: TRect); end; {Объект TDlgWin создает диалоговое окно для выбора режима работы} PDlgWin =TDlgWin; TDlgWin = object (TDialog) Procedure HandleEvent(var Event: TEvent); Virtual; end; {Следующий объект обслуживает внутреннюю часть рамочного окна TWorkWin. 'Он создает скроллируемое окно с записями из архивного файла и с помощью 'диалогового окна TDlgKin управляет работой с этими записями} PInterior =TInterior; TInterior = object (TScroller) PS: PStringCollection; Location: Word; Constructor Init(var Bounds: TRect; HS,VS: PScrollBar); Procedure Draw; Virtual; Procedure ReadFile; Destructor Done; Virtual; Procedure HandleEvent(var Event: TEvent); Virtual; end; {Объект-программа TNotebook поддерживает работу с меню и строкой статуса} TNotebook = object (TApplication) Procedure InitStatusLine; Virtual; Procedure InitMenuBar; Virtual; Procedure HandleEvent(var Event: TEvent); Virtual; Procedure FileSave; Procedure ChangeDir; Procedure DOSCall; Procedure FileOpen; Procedure Work; end; const {Команды для обработчиков событий:} cmChDir = 202; {Сменить каталог} cmWork = 203; {Обработать данные} cmDOS= 204; {Временно выйти в ДОС} cmCan= 205; {Команда завершения работы} cmDelete= 206; { Уничтожить текущую запись} cmSearch = 207; {Искать нужную запись} cmEdit = 209; {Редактировать запись} cmAdd = 208; {Добавить запись} {Множество временно недоступных команд:} WinCom1: TCommandSet = [cmSave,cmWork]; WinCom2: TCommandSet = [cmOpen]; LName = 25; {Длина поля Name} LPhone= 11; {Длина поля Phone} LAddr =40; {Длина поля Addr} LLine = LName+LPhone+LAddr; {Длина строки} type DataType = record {Тип данных в файле} Name: String [LName]; {Имя} Phone: String [LPhone]; {Телефон} Addr: String [LAddr] {Адрес} end; var DataFile: file of DataType; {Файловая переменная} OpFileF: Boolean; {Флаг открытого файла} {-----------------------}