Выбрать главу

TOKHelpRightDlg2 = class (TOKHelpRightDIg) private

{Закрытые объявления.}

public

{Открытые объявления.}

end;

Совет: Описание класса или типа начинается с буквы Т.

Это объявление не назовешь чересчур информативным. Поскольку вы не добавляли ни новых компонентов, ни кода, OKHelpRightDlg2 не определяет ни новых свойств, ни методов или событий. Определение класса TOKHelpRightDIg несколько интереснее.

TOKHelpRightDIg = class (TOKRightDIg)

HelpBtn: TButton;

procedure HelpBtnClick(Sender: TObject);

private

{Закрытые объявления.}

public

{Открытые объявления.}

end;

Как вы можете видеть, OKHelpRightDIg получает компоненты и код от OKRightDIg и добавляет объект HelpBtn типа TButton, а также обработчик события HelpBtnClick.

Преимущества наследования форм

Как уже упоминалось ранее, преимущества наследования форм заключаются в возможности добавления новых компонентов и кода в объект и наличии связи с оригиналом шаблона в хранилище. Если вы изменяете шаблон, наследуемый объект будет автоматически обновлен. Выполните следующие действия.

Выберите команду File/New Application, и появится пустое приложение.

Закройте главную форму, окно которой озаглавлено Forml.

Выберите команду File/New, и будет выведено диалоговое окно New Items.

Щелкните на вкладке Dialogs, и будет выведена страница диалогов.

Выберите стандартный (Standard) диалог с кнопками, выровненными вертикально по правой стороне.

Выберите опцию Inherit.

Щелкните на кнопке ОК, и Delphi выведет новую диалоговую форму OKRightDlg2.

Выберите из меню View/Forms, и будет выведено диалоговое окно View Form.

Выберите шаблонную форму OKRightDIg, щелкните на кнопке ОК, и Delphi выведет новую шаблонную форму, озаглавленную Dialog и расположенную точно поверх новой формы.

Теперь приступим к демонстрации. Переместите шаблонную форму в нижнюю часть главного окна Delphi. Вы обратили внимание, что новая форма OKRightDlg2 не открылась? Это связано с тем, что Delphi обновляет свойства Left и Тор одновременно с изменением соответствующих родительских свойств.

Однако в обратном направлении изменения не передаются. Чтобы убедиться в этом, выполните следующие действия.

Выберите команду View/Forms, и появится диалоговое окно View Form.

Выберите OKRightDlg2 и щелкните на ОК.

Переместите OKRightDlg2 в нижнюю часть экрана. Ваш экран должен выглядеть примерно так, как на рис. 1.11.

Рис. 1.11. Изменение распространяются только в одном направлении — от родителей к потомкам

При перемещении диалога-наследника на экране диалог-родитель будет оставаться на месте, что иллюстрирует передачу свойств только в одном направлении.

Создание приложений SDI

Термин SDI (Single Document Interface) дословно означает одно-документный интерфейс и описывает приложения, способные загрузить и использовать одновременно только один документ. Программа Notepad, приведенная на рис. 1.12, является ярким представителем такого класса программ.

Следует сказать несколько слов о термине документ. Приложения становятся все более объектоцентричными, т. е. они работают с неким центральным объектом, в который могут быть внедрены внешние объекты. В общем случае эти внешние объекты обрабатываются другим специализированным приложением. Примером может служить Wordpad (см. рис. 1.5), позволяющий внедрять любые OLE-объекты в свои файлы. Но он остается при этом SDI-приложением, так как может работать только с одним объектом (или документом в широком смысле этого слова) Wordpad.

Рис. 1.12.Программа Notepad как пример SDI-приложения

Способность одновременно работать только с одним объектом не мешает приложению использовать дополнительные формы, например диалоговые окна, панели инструментов и прочее (на рис. 1.13 показаны панели инструментов в окне Wordpad). Для реализации этих возможностей в Delphi просто добавьте форму в ваше приложение и установите ее свойство FormStyle равным fsSizeToolWin или fsToolWindow.

Еще одним примером может служить сама Delphi — огромное количество панелей инструментов, меню, разнообразных библиотек компонентов, взаимодействующих между собой форм… Но в целом она остается SDI-приложением, так как может загрузить и использовать одновременно только один объект.

Рис. 1.13. Программа Wordpad — SDI-приложение со многими формами

Пример SDI-приложения

Для демонстрации SDI создадим простую программу просмотра изображения.

.

Построение интерфейса

Обычно первым шагом построения программы является создание интерфейса. Не будем отступать от традиций, и выполним следующие действия.