Иллюстрированный самоучитель по Tirbo Pascal




Инкапсуляция новых полей и методов


При попытке откомпилировать полученный вариант программы Турбо Паскаль сообщит о неизвестном идентификаторе DisableCommands. На первый взгляд это кажется странным - ведь аналогичное обращение в обработчике событий TNotebook.HandleEvent не вызывало проблем! Все дело в том, что мы работаем с объектами, а следовательно, здесь очень важным становится контекст программ. Обработчик TNotebook-HandleEvent - это метод объекта TNotebook, который унаследовал от своих родителей многие свойства, в том числе и метод DisableCommands. Процедура FileOpen не является потомком объектов Turbo Vision и не имеет доступа к их полям и методам.

В Turbo Vision все новые процедуры обычно инкапсулируются в объекты., если в них необходимо получить доступ к специфическим

средствам этих объектов.

Поскольку процедура FileOpen вызывается из обработчика событий объекта TNotebook, нам следует включить ее в виде нового метода этого объекта:

type

TNotebook = object(TApplication)

.......

Procedure FileOpen; 

Procedure FileSave; 

Procedure ChangeDir; 

Procedure DOSCall; 

Procedure Work; 

end;

В этом фрагменте мы инкапсулировали в объект все методы, используемые обработчиком событий. Разумеется, необходимо соответствующим образом изменить заголовок процедуры FileOpen, поскольку она теперь стала методом объекта TNotebook:

Procedure TNotebook.FileOpen;

Аналогичным образом следует изменить и заголовки других инкапсулированных процедур. Теперь трансляция пройдет успешно, а после открытия файла станет недоступна команда F3.

Тексты двух других новых методов объекта TNotebook не нуждаются в особых комментариях:

Procedure TNotebook.FileSave; 

{Закрывает файл данных} 

begin

Close(DataFile);

OpFileF := False;

EnableCommands(WinCom2); {Разрешаем открыть файл}

DisableCommands(WinComl) {Запрещаем работу и сохранение} 

end; {TNotebook.FileSave}

{-----------}

Procedure TNotebook.ChangeDir; 

{Изменяет текущий каталог} 

var

PD: PChDirDialog; {Диалоговое окно смены каталога/диска}




Содержание  Назад  Вперед