MDI (Multiple Document Interface), позволяет в одном приложении работать одновременно с несколькими документами или с разными представлениями одного и того же документа. Этот интерфейс описан в руководстве по разработке интерфейса пользователя System Application Architecture Common User Access Advanced Interface Design Guide (SAA/CUA), созданном IBM. Интерфейс MDI использован в Windows, начиная с версии 3.0, в Windows NT, а также, разумеется, в графической оболочке Presentation Manager операционной системы OS/2. В качестве примера приложения, использующего интерфейс MDI (MDI-приложения), можно привести текстовый процессор Microsoft Word for Windows версии 2.0. http://ru.wikipedia.org/wiki/Multiple_document_interface Графический интерфейс на основе multiple document interface (или MDI) — представляет собой окна, расположенные под одним общим окном (как правило, за исключением модальных окон), в отличие от окон, расположенных отдельно друг от друга (SDI). Сокращение MDI обычно не расшифровывается. Вопрос: какой тип интерфейса предпочтителен - MDI или SDI - часто становится предметом обсуждений в сообществе разработчиков и пользователей программного обеспечения. Очевидно, что SDI более удобен при работе с несколькими приложениями разных типов. Разработчики широко используют оба типа интерфейса, а зачастую и интерфейс смешанного типа. Например, Microsoft меняла интерфейс Microsoft Office от SDI к MDI, а потом вернулась обратно к SDI, хотя степень реализации включает и первое, и второе. Среди недостатков MDI часто указывали отсутствие наглядной информации об открытых окнах, для просмотра текущего списка открытых окон в приложении пользователю было необходимо выбрать в меню пункт «открытые окна/window list», или подобный ему. В последнее время в приложениях стали появляться панели задач и вкладки для отображения открытых окон в MDI. Такой тип интерфейса иногда называют: «Tabbed document interface» (TDI), хотя фактически это разновидность MDI, после распространения которой критики заметно поубавилось. Сравнение с SDI Преимущества: В интерфейсе типа MDI (как и в TDI) общая панель меню и панель инструментов для всех дочерних окон, что уменьшает загромождённость экрана элементами интерфейса и увеличивает его полезную площадь. Все окна приложения можно прятать/показывать, сворачивать/разворачивать и проводить с ними другие манипуляции, как с одним окном. Дочерние окна можно размещать «черепицей» или «каскадом» в главном окне. Увеличение скорости и экономия памяти при работе в одном окне, скорость переключения между дочерними окнами также выше, чем между равноправными в среде операционной системы. В некоторых приложениях предусмотрены «горячие сочетания клавиш» для быстрой навигации, в частности, для переключения между окнами. Это ещё более повышает скорость и удобство работы с приложением, так как не задействуются дополнительные ресурсы операционной системы. Недостатки: Затруднительно (чаще всего, невозможно) выводить содержимое разных дочерних окон на разные мониторы. Также невозможно выводить их содержимое на разные виртуальные рабочие столы. MDI может затруднить параллельную работу с разными приложениями, так как переключение между внешними окнами разных программ и дочерними окнами одной неудобно. Плавающие панели инструментов одного приложения могут перекрывать рабочее окно другого, загораживая обзор, а иногда и сбивая пользователя с толку - какая панель к какому приложению относится. Пользователю нужно привыкать к обоим типам интерфейса, так как введение MDI не отменяет полностью использование SDI, который заложен в большинстве операционных систем. Многие программные менеджеры окон предоставляют более гибкие возможности для работы с группами окон, чем MDI-интерфейс того или иного приложения. Single document interface (или SDI) — способ организации графического интерфейса приложений в отдельных окнах. Не существует «фонового» или «родительского» окна, содержащего меню или панели инструментов, по отношению к активному — каждое окно несёт в себе эти элементы. Такие приложения, позволяющие редактировать более одного документа одновременно, например, текстовые процессоры, могут создавать у пользователя впечатление, что запущена не одна копия программы, а несколько. Обычно, каждое из окон отображается отдельно на панели задач операционной системы, иногда панель задач позволяет группировать записи об окнах, принадлежащих одной программе. Многодокументный интерфейс со вкладками (англ. Tabbed document interface) — разновидность графического интерфейса пользователя, в котором каждый документ находится на отдельной вкладке одного окна. Благодаря компактности и простоте написания, вкладочный интерфейс широко используется в самом разном ПО (браузеры, среды программирования и т. д.) — а также в простом самописном ПО. Сравнение с SDI Преимущества: Если в программе есть какие-то общие интерфейсные элементы, относящиеся ко всем документам, интерфейс на вкладках — логичный шаг. Логически отделяются окна документов от окон других программ. Расходуется меньше памяти. Панели управления разных окон находятся в одном и том же месте. Логичный шаг, когда все документы — это части одного «мегадокумента» или «проекта» (как и в MDI). Недостатки: Тяжело работать с большим количеством программ одновременно (впрочем, как и в MDI). Не работают встроенные в ОС функции переключения между программами наподобие 3D Desktop и Exposé. Невозможно увидеть несколько документов одновременно. Эта задача решается гибридными схемами (см. ниже). Не получается задействовать много мониторов. Авария с одним из документов приводит к аварии всей программы (как и в MDI). Сравнение с MDI Преимущества: Лёгкий доступ к различным документам (как и в SDI). При переключении между несколькими окнами: заголовки окон не отнимают места. Нет хаоса на рабочем столе, когда открываются несколько документов. Как следствие — программисту не нужно писать какие-либо ухищрения для борьбы с этим хаосом, а пользователю — располагать окна в нужном порядке. Недостатки: Не работают встроенные в ОС функции переключения между программами наподобие 3D Desktop и Exposé. Невозможно увидеть несколько документов одновременно. Эта задача решается гибридными схемами (см. ниже). Невозможно задействовать много мониторов. Если документы имеют размеры меньшие, чем экран — излишний расход места на экране. Гибриды Вкладочный интерфейс — благодатная почва для различных интерфейсных гибридов. Вот несколько вариантов. Фреймовый интерфейс Окно программы делится на несколько фреймов. В каждом из них можно держать несколько вкладок с документами. Типичный пример — Code::Blocks. Преимущества: малый расход места на экране сочетается с возможностью видеть несколько документов. Недостатки: сложно программируется; упрощённые реализации могут накладывать свои ограничения (например, часть документов располагаются в панели гаджетов и видны постоянно, а остальные — на вкладках); невозможно расположить документы на разных мониторах или разных «рабочих столах»; некоторые типы панелей (например, миникарта в редакторе уровней) отнимают больше места, чем они реально занимают. MDI-окна как вкладки Гибрид вкладочного и многодокументного интерфейса, в котором пользователь переключается между MDI-окнами с помощью вкладок (как в Opera или IDA Pro). Преимущества: простота программирования; лёгкость переключения и компактность TDI сочетается с гибкостью MDI. Недостатки: формально это MDI с его высоким расходом памяти; панель вкладок отнимает место; зачастую не удаётся задействовать несколько мониторов; не решена проблема группировки документов. Вкладки в MDI-окнах Обратная концепция интерфейса: есть несколько MDI-окон, в каждом из которых есть вкладки. Примеры: Delphi и C++ Builder, панели управления в Adobe Photoshop. Преимущества: группирует разнотипные документы. Недостатки: универсальный интерфейс сложно программируется, а упрощённые реализации могут накладывать свои ограничения (например, конструктор форм в Delphi — всегда отдельное окно). Про пользовательские интерфейсы (english): http://richnewman.wordpress.com/2007/10/26/user-interface-design-for-business-applications/ Форум: http://www.sql.ru/Forum/actualthread.aspx?bid=20&tid=740953&pg=1 MDI не надо использовать в тех случаях, когда не требуется переключения между различными окнами Если говорить о приложении, в котором используется больше одного справочника и одного журнала, то вариант с закладками не является самым удобным, потому как не позволяет одновременно смотреть на несколько таблиц. А это, как правило, необходимо. SDI-приложение с закладками абсолютно ничем не отличается от MDI с максимизированными дочерними окнами. Чтобы разделить их, можно использовать Docking. К примеру - сейчас принято дублировать меню и панели во всех дочерних окнах с документом, а не делать их только для главной формы. И принято вообще не выводить главную форму.