Проектирование графического интерфейса пользователя______________293

а в свойства Filter занесите строку «текстовые файлы» с шаблоном *.txt и стро-
ку «все файлы» с шаблоном *.*.

5. Разместите на форме компонент типа MainMenu. Создайте в нем раздел Файл
(присвойте его свойству Name значение MFile) с подразделами Открыть...
(Name = MOpen) и Сохранить как... (Name = MSave).

6. Теперь напишите обработчики событий для введенных подразделов меню. Для
раздела MOpen обработчик может иметь вид:

if (OpenDialogl->Execute ())
{

Memol->Clear() ;

Memol->Lines->LoadFromFile(OpenDialogl->FileName) ;

)

В     Для раздела MSave обработчик может иметь вид:

if (SaveDialogl->Execute())
-         Memol->Lines->SaveToFile(SaveDialogl->FileName) ;

j 7. Сохраните проект, дав спроектированному модулю имя UDoc.
f     Простенький редактор (пока однооконный) построен. Можете скомпилировать
его и проверить в работе.

Теперь давайте спроектируем родительскую форму и превратим наш одно-
оконный редактор в многооконный.

' 8. Измените свойство FormStyle созданной вами ранее формы на fsMDIChild.

9. Откройте в вашем проекте новую форму (File | New Form). Назовите ее FMDI.
Сохраните ее модуль с именем UMDI (File Save As...).

10. Измените свойство FormStyle новой формы на fsMDIForm. Задайте свойство
WindowState равным wsMaximized, чтобы окно этой формы предъявлялось
пользователю в первый момент развернутым на весь экран. Введите (вручную
или командой File | Include Unit Hdr) директиву препроцессора #include, ссылаю-
щуюся на заголовочный файл UMDI.h модуля UMDI. Иначе вы не сможете от-
крывать дочерние формы и управлять ими.

11. Выполните команду Project Options и в открывшемся окне на странице Forms
переведите дочернюю форму FDoc из списка автоматически создаваемых в
список доступных форм. При этом, как вы сможете убедиться по выпадающе-
му списку вверху окна, главной станет родительская форма UMDI — единст-
венная, оставшаяся в списке автоматически создаваемых форм.

12. Введите на форму UMDI компонент типа MainMenu. Сформируйте в нем раз-
дел меню Окно (имя Name = MWind) с подразделами Новое (Name =1 MNew),
Каскад (Name = MCascade), Упорядочить по горизонтали (Name = MHor), Упо-
рядочить по вертикали (Name = MVert), Упорядочить значки (Name = MIcons).
Свойство формы WindowMenu установите равным MWind. Это обеспечит по-
явление внизу меню Окно разделов, содержащих список открытых окон.

Чтобы введенные разделы меню не заменялись во время выполнения раздела-
ми меню дочернего окна, необходимо задать им всем значения свойства Groupln-
dex, отличные от тех, которые имеют разделы меню дочерней формы. Если этого
не сделать, то в процессе выполнения при открытии первого же дочернего окна

1меню Окно заменится на меню дочерней формы Файл. Следовательно, дальнейшее
управление окнами будет потеряно. Это произойдет потому, что по умолчанию зна-
чения свойства Grouplndex для всех разделов всех меню равно 0.
Если мы хотим, чтобы в процессе выполнения приложения меню дочерней
формы Файл встраивалось перед меню Окно, необходимо всем разделам меню Окно