Главная страница
Навигация по странице:

  • FormStyle

  • Окно->Новое

  • MDIChildCount

  • Cascade

  • Пример приложения с интерфейсом множества документов – простой многооконный редактор

  • Реализовать рассмотренный пример

  • MDI-приложения. Mdiприложения


    Скачать 4.8 Mb.
    НазваниеMdiприложения
    Дата03.03.2023
    Размер4.8 Mb.
    Формат файлаpptx
    Имя файлаMDI-приложения.pptx
    ТипДокументы
    #966674

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

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


    SDI-приложение

    Multiple Document Interface (MDI) — способ организации графического интерфейса пользователя, предполагающий использование оконного интерфейса, в котором большинство окон расположены внутри одного общего окна. Этим он и отличается от SDI, в котором окна располагаются независимо друг от друга.

    MDI-приложение

    В родительской форме свойство FormStyle устанавливается в fsMDIForm, а в дочерней – fsMDIChild.
    обработчик может иметь вид:

    класс_дочерней_формы * имя = new класс_дочерней_формы (Application);

    if (!имя) return;

    имя->Show();



    Например, мы создали родительскую форму, содержащую раздел меню Окно->Новое и дочернюю форму с именем FDoc, имеющую тип TFDoc.
    В модуль родительской формы необходимо вставить директиву препроцессора, подключающую заголовочный файл дочерней формы. А в обработчике события, связанного с выбором пользователем раздела Окно->Новое, можно написать следующий код:
    TFDoc * TF=new TFDoc(Application);
    if (!TF) return;

    TF->Show();


    Свойство MDIChildCount определяет количество открытых дочерних окон.
    Пример:
    TF->Caption="Документ "+IntToStr(MDIChildCount);
    Свойство MDIChildren[i] дает доступ к i-тому окну (окна индексируются в порядке их создания, последнее созданное окно имеет индекс 0).
    Пример: из родительской формы Form1 закрыть все дочерние окна, начиная с последнего
    for (int i=MDIChildCount-1;i>=0;i--)
    MDIChildren[i]->Close();


    Метод Cascade располагает все открытые окна каскадом.
    Метод Tile располагает окна мозаикой.
    При этом учитывается свойство родительской формы TileMode.
    Если оно равно tbVertical – упорядочивание по вертикали, tbHorizontal – по горизонтали.
    Метод ArrangeIcons упорядочивает расположение пиктограмм свернутых окон.

    Упорядочивание окон


    «Каскад»

    «По вертикали»

    «По горизонтали»

    «Значки»

    Пример приложения с интерфейсом множества документов – простой многооконный редактор


    Построим дочерние окна с использованием компонентов TRichEdit.
    1. Назвать форму FDoc.
    2. Поместить на форму компонент RichEdit1 типа TRichEdit.
    RichEdit1->Align=alClient;
    3. Поместить на форму компоненты TOpenDialog и TSaveDialog.
    Свойство DefaultExt задать rtf.
    Свойство Fitler – "текстовые файлы", установив для этого шаблоны *.rtf, *.txt: и "все файлы" – *.*


    4. Поместить на форму компонент TMainMenu. Создать следующие элементы меню: Файл (Name=MFile), подпункт Открыть (Name=MOpen) и Сохранить как… (Name=MSave).
    5. Создать обработчики событий:
    для MOpen
    if (OpenDialog1->Execute())
    {RichEdit1->Clear;
    RichEdit1->Lines->LoadFromFile(OpenDialog1->FileName);
    }
    для MSave
    if (SaveDialog1->Execute())
    { RichEdit1->Lines->SaveToFile(SaveDialog1->FileName);
    }
    6. Сохранить проект, дав имя модулю реализации UDoc.


    4. Поместить на форму компонент TMainMenu. Создать следующие элементы меню: Файл (Name=MFile), подпункт Открыть (Name=MOpen) и Сохранить как… (Name=MSave).
    5. Создать обработчики событий:
    для MOpen
    if (OpenDialog1->Execute())
    {RichEdit1->Clear;
    RichEdit1->Lines->LoadFromFile(OpenDialog1->FileName);
    }
    для MSave
    if (SaveDialog1->Execute())
    { RichEdit1->Lines->SaveToFile(SaveDialog1->FileName);
    }
    6. Сохранить проект, дав имя модулю реализации UDoc.


    Спроектируем родительскую форму.
    7. Изменить свойство формы FDoc:
    FormStyle=fsMDIChild;
    8. Создать в проекте новую форму с именем FMDI. Сохранить в проекте модуль реализации с именем UMDI.
    9. Изменить свойство формы FMDI
    FormStyle=fsMDIForm;
    WindowState=wsMaximized;
    10. Подключить форму FMDI к проекту:
    в файле реализации UDoc: #include "UMDI.h"
    11. Исключить форму FDoc из числа автоматически создаваемых (Project->Options).


    12. Поместить на форму FMDI компонент TMainMenu и создать меню следующего вида:
    Окно (Name=MWind)
    Новое (Name=MNew)
    Каскад (Name=MCascade)
    Упорядочить по горизонтали (Name=MHor)
    Упорядочить по вертикали (Name=MVert)
    Упорядочить значки (Name=MIcons)
    Установить свойство WindowMenu=MWind
    13. Установить для всех разделов и подразделов свойство GroupIndex>0


    14. Создать обработчики событий:
    для MNew
    {TFDoc *TF=new FDoc(Application);
    if(!TF) return;
    TF->Caption="Документ "+IntToStr(MDIChildCount);
    TF->Show();}
    для MHor
    TileMode=tbHorizontal;
    Tile();
    для MVert
    TileMode=tbVertical;
    Tile();
     для MCascade
    Cascade();
     для MIcons
    ArrangeIcons();

    Реализовать рассмотренный пример



    написать администратору сайта