Наследование форм
Наследование форм воплощает лучшие возможности повторного использования форм Use и Copy. При копировании вы создаете дубликат формы и добавляете в него необходимые компоненты и код. Неудобство этого метода состоит в том, что изменения не вносятся в шаблон. При использовании Use изменения вносятся не только в шаблон, но и во все объекты в других проектах.
Наследование позволяет создать множество экземпляров шаблона, которые могут отличаться один от другого, как при использовании Copy. Оно так же автоматически вносит изменения в объект хранилища, как и при использовании Use.
Использование наследования форм
В хранилище объектов содержится несколько примеров наследования форм. Для того чтобы наследовать одну форму из другой, выполните следующие действия.
Выберите команду File/New Application. При этом появится пустое приложение.
Выберите команду File/New, и будет выведено диалоговое окно New Items.
Щелкните на вкладке Dialogs, и будет выведена страница диалогов.
Выберите диалог с пиктограммой Help, кнопки которого выровнены вертикально по правой стороне формы.
Выберите опцию Inherit.
Щелкните на кнопке ОК, и Delphi выведет новую диалоговую форму.
Заголовок нового диалогового окна- OKHelpRightDlg2. Почему Delphi создает это диалоговое окно как OKHelpRightDIg? Ответ заключается в наследовании форм. В списке форм вашего проекта содержится четыре объекта- Form1, OKHelpRightDIg, OKHelpRightDlg2 и OKRightDlg. Поскольку вы наследуете новую форму из OKHelpRightDIg, Delphi включает его в ваш проект для компиляции вашей программы. Это и приводит к наименованию новой формы как OKHelpRightDlg2. К тому же это позволяет избежать конфликта имен. В свою очередь, OKHelpRightDIg - наследник OKRightDlg, а потому последний также включен в проект.
ПРЕДОСТЕРЕЖЕНИЕ: Две родительские формы, OKHelpRightDIg и OKRightDlg, связываются с проектом так же, как и опция Use, поэтому, решив их изменить, вы измените объекты, хранящиеся в Object Repository.
Цепочка наследования отражена в автоматически генерируемом коде. Описание класса OKHelpRightDlg2 выглядит так.
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 Изменение распространяются только в одном направлении - от родителей к потомкам
При перемещении диалога-наследника на экране диалогородитель будет оставаться на месте, что иллюстрирует передачу свойств только в одном направлении.
1 2 3 4 5
8 8 8
| |