Читать «Учебник по Delphi 4.0» онлайн - страница 34

Unknown

WindowMenu

Профессиональные MDI-приложения позволяют активизировать необходимое дочернее окно, выбрав его из списка в меню. Свойство WindowMenu определяет объект TMenuItem, который Delphi будет использовать для вывода списка доступных дочерних форм.

Для вывода списка TMenuItem должно быть меню верхнего уровня. Это меню имеет свойство Caption, равное swindow.

MDI-события TForm

В MDI-приложении событие OnActivate запускается только при переключении между дочерними формами. Если фокус ввода передается из не MDI-формы в MDI-форму, генерируется событие OnActivate родительской формы, хотя ее свойство Active никогда и не устанавливается равным True. Эта странность на самом деле строго логична: ведь, если бы OnActivate генерировался только для дочерних форм, не было бы никакой возможности узнать о переходе фокуса ввода от другого приложения.

MDI-методы TForm

Специфичные для MDI-форм методы перечислены ниже.

Arrangelcons выстраивает пиктограммы минимизированных дочерних форм в нижней части родительской формы.

Cascade располагает дочерние формы каскадом, так что видны все их заголовки.

Next и Previous переходит от одной дочерней формы к другой, как будто вы нажали <Ctrl+Tab> или <Ctrl+Shift+Tab>.

Tile выстраивает дочерние формы так, что они не перекрываются.

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

В этом разделе мы расширим возможности созданной ранее программы просмотра изображений.

Создание интерфейса

Интерфейс MDI-приложения очень похож на интерфейс разработанного ранее SDI-приложения, но каждое изображение выводится в отдельной, а не в главной форме. Выполните следующие действия для создания родительской формы.

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

2. Установите следующие свойства.

Свойство Значение

Caption Image Viewer

FormStyle fsMDIForm

Name frmMDIParent ShowHint True

3. Поместите компонент TPanel в форму. Установите следующие его свойства.

Свойство Значение

Align alTop

Caption –

4. Поместите три компонента TSpeedButton в TPanel и назовите их spbtnLoad, spbtnStretch и spbtnCenter. Установите следующие их свойства.

Свойство Значение

spbtnLoad.Hint Load

spbtnLoad.Left 8

spbtnLoad.Top 8

spbtnStretch.AllowAlIUp True

spbtnStretch.Grouplndex 1

spbtnStretch.Hint Stretch

spbtnStretch.Left 48

spbtnStretch.Top 8

spbtnCenter.AllowAlIUp True

spbtnCenter.Grouplndex 2

spbtnCenter.Hint Center

spbtnCenter.Left 80

spbtnCenter.Top 8

Свойства Glyph установите те же, что и для SDI-приложения.

5. Добавьте в форму компонент TOpenDialog и установите следующие его свойства.

Свойство Значение

Filter Bitmaps (*.bmp)]*.bmp

Name opndlgLoad

Options [ofPathMustExist,ofFileMustExist]

Теперь создадим дочернюю форму.

1. Выберите из меню File/New Form, и появится пустая форма.

2. Установите следующие ее свойства.

Свойство Значение

FormStyle fsMDIChild

Name frmMDIChild

Position poDefaultPosOnly

3. Поместите компонент TImage во вновь созданную форму и установите его следующие свойства.