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

  • 31 мая 2013 г.
  • 1342 Слова
ПРАКТИЧЕСКОЕ ЗАНЯТИЕ № 9, 10, 11

Тема: Реализация элементарной базы данных средствами BDS. Цель: Научиться проектировать MDI приложения с использованием компонентов BDS I. Теоретическая часть Типичным приложением MDI является привычный всем Word. В приложении MDI имеется родительская (первичная) форма и ряд дочерних форм (называемых также формами документов). Окна документов могут создаватьсясамим пользователем в процессе выполнения приложения с помощью команд типа Окно | Новое. Число дочерних окон заранее неизвестно — пользователь может создать их столько, сколько ему потребуется. Окна документов располагаются в клиентской области родительской формы. Поэтому чаще всего целесообразно в родительской форме ограничиваться только главным меню, инструментальными панелями и, если необходимо,панелью состояния, оставляя все остальное место в окне для окон дочерних форм. При этом обычно окно родительской формы в исходном состоянии разворачивают на весь экран. Для создания приложения MDI необходимо спроектировать родительскую и дочернюю формы. В родительской форме свойство FormStyle устанавливается в fsMDIForm, а в дочерней — в fsMDIChild. Поскольку дочерние окна будет создавать сампользователь в процессе выполнения приложения, дочернюю форму необходимо исключить из числа создаваемых автоматически. Рассмотрим теперь, как можно сделать обработчик команды, по которой пользователь задает в родительском окне создание нового окна документов — нового экземпляра дочерней формы. Этот обработчик может иметь вид:
var : ; begin :=.Create(Application);

end; Переменная, объявленная в этойпроцедуре, используется для создания произвольного временного имени (указателя) вновь создаваемого объекта — формы. Первый из выполняемых операторов процедуры создает этот объект. Далее могут следовать какие-то операторы настройки нового дочернего окна. Например, новому окну надо присвоить какой-то уникальный заголовок (свойство Caption дочерней формы), чтобы пользователь мог отличать друг от другаокна документов —это безусловное требование к приложениям MDI Windows. Пусть, например, вы создали в модуле UMain родительскую форму, содержащую раздел меню Окно Новое, и создали в модуле UDoc дочернюю форму с именем FDoc, имеющую тип TFDoc (посмотреть для контроля имя и тип дочерней формы вы можете в верхнем выпадающем списке Инспектора Объектов, выделив интересующую вас форму, или в модуле,посмотрев автоматически создаваемый Delphi оператор, объявляющий переменную формы и расположенный сразу после определения класса данной формы). Тогда в операторе uses модуля родительской формы вы должны сослаться на модуль дочерней формы UDoc. А в обработчике события, связанного с выбором пользователем раздела меню Окно Новое, можно написать обработчик вида:
var NewF : TFDoc; begin NewF :=TFDoc.Create(Application); NewF.Show; end;

В родительской форме имеется ряд свойств, позволяющих управлять дочерними окнами. Все они доступны только для чтения и только во время выполнения. Свойство MDIChildCoimt определяет количество открытых дочерних окон.

Свойство MDI Chi Idrenfi: integer] дает доступ к i-му окну (окна индексируются в порядке их создания). Приведем оператор, который можно вставить впредыдущий пример для задания уникального имени вновь созданного окна NewF:
NewF.Caption :- 'Окно’ + IntToStr(MDIChildCount);

Следующий пример показывает процедуру, с помощью которой из родительской формы Forml можно закрыть (свернуть) все дочерние окна, начиная с последнего:
var I: Integer; begin with Forml do for I := MDIChildCount-1 downto 0 do MDIChildren[I].Close; end;

А следующий кодвосстанавливает все свернутые дочерние окна:
var I: Integer; begin for I :- 0 to MDIChildCount-1 do MDIChildren[I].WindowState := wsNormal; end;

В момент создания окон документов они автоматически располагаются каскадом в клиентской области родительской формы. При этом, если размера клиентской области не хватает для размещения дочерних окон, размеры последних автоматически...
tracking img