Лабораторная работа № 11 Модель многодокументного интерфейса
Различают две различные модели приложений Windows:
с интерфейсом одного документа (SDI) и
с интерфейсом множества документов (MDI).
До сих пор в лабораторных работах создавались приложения с интерфейсом одного документа. В этих приложениях имеется одна главная форма, и при необходимости отображаются другие диалоговые формы.
В приложениях с интерфейсом множества документов имеется родительская (первичная) форма и ряд дочерних форм (называемых также формами документов). Окна документов могут создаваться самим пользователем в процессе выполнения приложения. Число дочерних окон заранее неизвестно – пользователь может создавать их столько, сколько ему потребуется. Окна документов располагаются в клиентской области родительской формы. Одним из наиболее очевидных свойств модели MDI является то, что, дочерние окна ограничены главным окном и могут перемещаться только в пределах этого окна. MDI-приложения практически всегда имеют в главном меню пункт Window. Этот пункт обычно содержит подпункты Cascade и Tile, позволяющие расположить дочерние окна каскадом или мозаикой. При сворачивании дочернего окна его значок остается в пределах главного окна, Если же сворачивается обычное (не MDI) дочернее окно, значок размещается на рабочем столе Windows.
Для создания МDI-приложения в Delphi необходимо установить для свойства FormStyle главной формы значение fsMDIForm. При этом свойство FormStyle каждого из дочерних окон MDI должно иметь значение fsMIChild. Чтобы MDI-приложение заработало, требуется совсем немного – создать форму для главного окна и необходимое количество форм для дочерних окон.
Практическая часть
Рассмотрим процесс создания приложения, которое позволяет открывать и сохранять графические файлы, содержащие растровые изображения, значки и метафайлы. План действий будет следующим:
Создать форму для главного окна MDI, включающую меню.
Написать код для пунктов File|Open… и File|Save As….
Написать код для пунктов Cascade, Tile и Arrange All меню Window.
Создать дочерние формы MDI.
Создать диалоговое окно About.
Запустить программу на выполнение.
Шаг 1. Создание формы главного окна
Запустите Delphi и выберите в главном меню пункт File|New Application.
Измените значение свойства Name главной формы на MainForm.
Измените значение свойства Caption на Picture Viewer.
Установите свойство Height равным 450, a свойство Width равным 575 (или другим величинам, подходящим для разрешения вашего дисплея).
Измените значение FormStyle на fsMDIForm.
Основа формы готова. Теперь нужно добавить к ней меню. Воспользуемся такой возможностью Delphi, как импорт предопределенных меню.
Щелкните на закладке Standard палитры компонентов, а затем на кнопке MainMenu.
Поместите компонент MainMenu на форму. Местоположение не имеет значения, поскольку значок, представляющий меню, просто указывает на его наличие и не отображается во время выполнения программы.
Измените значение свойства Name на MainMenu.
Дважды щелкните на компоненте MainMenu. На экране появится конструктор меню.
Установите курсор мыши на конструктор меню и щелкните правой кнопкой. Выберите в контекстном меню пункт Insert From Template... (вставить из шаблона). Появится диалоговое окно Insert Template (вставить шаблон).
Выберите пункт MDI Frame Menu и нажмите кнопку ОК. Меню появится в конструкторе.
Закройте конструктор меню, щелкнув на кнопке закрытия окна. Заметьте, что в главной форме появилось меню. Можете пощелкать на пунктах верхнего уровня, чтобы просмотреть меню целиком. Не щелкайте пока на подпунктах. Обратите внимание, что в меню присутствует много лишних пунктов. Пока их можно оставить на своих местах.
Подготавливаем диалоговые окна File Open и File Save.
Щелкните на закладке Dialogs палитры компонентов. Выберите компонент OpenPictureDialog и поместите его на форму. Значок OpenPictureDialog может находиться в любом месте формы.
Измените значение свойства Name диалогового окна на OpenPictureDialog.
Измените значение свойства Title на Open a Picture for Viewing.
Добавьте к форме компонент SavePictureDialog.
Измените значение свойства Name компонента SavePictureDialog на SavePictureDiaiog, а значение свойства Title – на Save a Picture.