В VB форма MDI (MultipleDocumentInterface, многооконная программа) определяется следующим образом: «Форма MDI служит фоновым окном программы и содержит форму с атрибутом MDIChild, установленным в True». В программе VB может быть не более одной родительской формы MDI и может быть несколько дочерних форм MDI; способ создания родительской формы MDI — это выбор «NewMDIForm» в меню «Файл» VB.
Когда программа MDI запущена, если дочернее окно имеет меню, то при активации дочернего окна меню дочернего окна автоматически заменит меню родительского окна, когда дочернее окно свернуто, дочернее окно будет свернуто; появится в родительском окне MDI.
Появление универсального графического интерфейса Windows позволяет пользователям компьютеров легко использовать различное программное обеспечение Windows без специального обучения; это также стандарт, которому должны следовать разработчики программ при разработке интерфейса программ Windows. разработчиков программ, что позволяет им сосредоточиться на решении и реализации проблем.
Появление Visual Basic еще больше упростило проектирование программных интерфейсов Windows. Для реализации интерфейса стандартных приложений Windows требуется лишь очень небольшой объем кода. Однако, если вы не понимаете принципов проектирования интерфейсов программ Windows или не владеете навыками программирования интерфейсов под VB, будет сложно спроектировать и реализовать интерфейс, который одновременно соответствовал бы общим стандартам и был бы уникальным. Принципы проектирования интерфейсов Проектирование интерфейсов имеет общие принципы, наиболее важными из которых являются:
Интерфейс должен быть последовательным. Принцип последовательности легче всего нарушить при проектировании интерфейса, а также легче всего изменить и избежать. Например, в меню должна использоваться одна и та же терминология, а диалоговые окна онлайн-справки должны иметь одинаковый стиль;
Должны быть ярлыки для общих операций. Общие операции используются часто, поэтому длину последовательности операций следует сократить. Например, установите сочетания клавиш для общих операций с файлами, таких как открытие, сохранение и сохранение как. Предоставление ярлыков для распространенных операций не только повысит эффективность работы пользователя, но и сделает интерфейс простым и эффективным в функциональной реализации.
Обеспечивает простую обработку ошибок. Система должна иметь возможности обработки ошибок. Система должна быть способна обнаруживать ошибки при их возникновении и обеспечивать простые и понятные возможности обработки ошибок. Состояние системы не меняется после возникновения ошибки или системе необходимо предоставить рекомендации по устранению ошибок.
Предоставляйте информативную обратную связь. Должна быть информационная обратная связь по важным операциям оператора. Не требуется обратной связи по часто используемым операциям и простым операциям, но для редко используемых и важных операций система должна предоставлять информационную обратную связь.
Операция обратима. Операция должна быть обратимой. Это полезно для операторов без специальных знаний. Обратимое действие может представлять собой одну операцию или относительно независимую последовательность операций.
Хорошо продуманная онлайн-справка. Хотя онлайн-помощь не является обязательной для опытных пользователей, она играет очень важную роль для большинства неквалифицированных пользователей.
Принципы дизайна меню и программирование
Дизайн меню имеет следующие общие принципы:
Организуйте меню в соответствии с функциями системы.
Выбирайте широкое и мелкое дерево меню, а не узкое и глубокое.
Группируйте пункты меню по их значению и сортируйте их по определенным правилам; Названия пунктов меню должны быть короткими, понятными и предпочтительно начинаться с ключевого слова.
Для часто используемых опций необходимо настроить сочетания клавиш. Объединяя вышеперечисленные принципы, программирование меню включает в себя следующие технологии и приемы:
Группировка пунктов меню
В VB группировка пунктов меню достигается путем разделения строки меню горизонтальными линиями. Добавьте пункт меню с атрибутом Caption «» в определенную позицию меню, и он появится в меню в виде горизонтальной линии. Во многих случаях одно и то же функциональное меню можно разделить на несколько групп в соответствии с функциями пунктов меню. В этом случае для группировки пунктов меню можно использовать разделительные горизонтальные линии.
Настройки сочетаний клавиш для общих опций
Откройте окно дизайна меню (MenuDesignWindow). Для каждого пункта меню должен быть соответствующий список сочетаний клавиш (Shortcut). Просто выберите один из них. Следует отметить, что таким образом нельзя определить клавиши быстрого доступа для меню с подменю или меню верхнего уровня. В соответствии с принципами проектирования интерфейса Windows, клавиша быстрого доступа к верхнему меню имеет форму клавиши с буквой Alt. Способ его реализации будет описан позже.
Для некоторых часто используемых пунктов меню функций предусмотрены обычные клавиши быстрого доступа. Например, используйте CTRL O, чтобы открыть файл, CRTL S, чтобы сохранить файл, CTRL P, чтобы распечатать его и так далее.
После определения сочетания клавиш для пункта меню за параметром в меню появляется текстовое представление сочетания клавиш.
Включение и отключение, видимые и скрытые параметры меню. Чтобы выразить некоторые специальные функции пунктов меню, можно использовать атрибуты включения и отключения, видимые и скрытые параметры меню. Если функция, представленная опцией, по каким-либо причинам не может быть реализована, выбор опции следует запретить. Опции меню включаются и отключаются путем изменения атрибута Enabled опции. Например, если опция меню называется nmuName, отключение этой опции можно реализовать следующим образом:
mnuName.Enabled=False
Таким же образом вы можете скрыть опцию, используя
mnuName.Visible=False
Чтобы добиться этого, чтобы снова сделать скрытую опцию видимой, используйте
mnuName.Visible=Истина
выполнить.
Скрытие и восстановление видимости пунктов меню часто используется при реализации динамических меню.
Динамическая загрузка пунктов меню
Динамическая загрузка пунктов меню означает, что количество пунктов меню не фиксировано и при необходимости может загружаться динамически. Самый простой пример — список недавно открытых файлов в меню «Файл». Перед первым открытием файла список пуст и не отображается в меню файла; после открытия файла список перестает быть пустым, и в меню файла появляется пункт меню, представляющий открытый файл.
В приведенном выше примере атрибут нижнего индекса (Index), атрибут заголовка (Caption), видимый атрибут (Visible) пункта меню и метод загрузки (LoadMethod) пункта меню используются комплексно.
Конкретный процесс реализации выглядит следующим образом:
Добавьте пункт меню в меню «Файл» с произвольным заголовком и предположим, что атрибут «Имя» этого пункта меню равен opens_files_list;
Измените видимый атрибут пункта меню opens_files_list так, чтобы opens_files_list.Visible=False
Измените атрибут нижнего индекса пункта меню opens_files_list так, чтобы
opens_files_files_list.Index=0
Управлять динамической загрузкой пункта меню open_files_list в программе.
Предположим, вы хотите отобразить имя второго открытого файла, и это имя файла хранится в массиве имен файлов opens_file_name. Следующий код реализует эту функцию:
Loadopened_files_list(1)
opens_files_lise(1).Caption="&2" имя_открытого_файла(1)
opens_files_list(1).Visible=True
Следует отметить, что метод Load нельзя использовать для пунктов меню, нижний индекс которых равен 0. Поскольку элемент меню загружается в память при выполнении программы, кроме того, символ «&» в символе атрибута заголовка пункта меню имеет особое значение, и его функция заключается в отображении строки атрибута. в то же время сам «&» не отображается, но символ, следующий за «&», отображается с подчеркиванием, и этот символ становится горячей клавишей.
Если пункт меню, индекс которого не равен 0, больше не нужен, чтобы уменьшить занятость ресурсов памяти, вы можете использовать метод Unload для его выгрузки из памяти, аналогично вы не можете использовать Unload для выгрузки пункта меню, индекс которого равен; равен 0.
Реализация всплывающего меню (PopupMenuMethod)
Меню, созданное в окне дизайна меню (MenuDesignWindow) в VB, представляет собой раскрывающееся меню. Выпадающее меню — это меню, которое пользователь может открыть после выбора в верхней строке меню в любой момент, а всплывающее меню — это меню, которое появляется после щелчка кнопкой мыши в определенной области. интерфейс программы. В некоторых случаях всплывающие меню могут сделать системные функции более краткими и эффективными, упрощая их использование.
Всплывающее меню программы Widnows обычно появляется, когда пользователь нажимает кнопку мыши на рабочем столе программы. Всплывающие меню чаще всего используются для реализации дополнительных или расширенных функций системы. Содержимое всплывающего меню может меняться в зависимости от того, где нажата кнопка мыши. Поскольку всплывающее меню будет занимать часть экрана, текст в меню следует максимально сократить.
В VB реализация всплывающих меню требует использования технологии проектирования выпадающих меню и метода PopupMenu. Конкретный метод:
Спроектируйте всплывающее меню соответствующей формы в окне дизайна меню (MenuDesignWindow). Следует отметить, что всплывающее меню должно иметь хотя бы одно подменю, поэтому в этом меню не может быть сочетаний клавиш, а атрибут Checked должен иметь значение False; Затем измените свойство Visible всплывающего меню на False.
Добавьте следующий код в Form_Click формы с созданным всплывающим меню (при условии, что свойство Name всплывающего меню имеет значение mnuExample):
Подформа_Клик()
PopupMenumnuПример
EndSub
Если вам требуется, чтобы меню можно было активировать только нажатием левой или правой кнопки мыши, необходимо добавить в Form_MouseDown следующий код:
SubForm_MouseDown(ButtonAsInteger,ShiftAsInteger,xAsSingle,yAsSingle)
IfButton=2thenButton=2 означает правую кнопку мыши.
PopupMenumnuПример
КонецЕсли
Полный синтаксис PopupMenu:
[Форма.]PopupMenuname[флаги[,x[,y]]]
Изменение значения флагов позволяет управлять внешним видом всплывающего меню. Флаги имеют два набора значений. Первый набор значений используется для управления режимом отображения меню, включая POPUPMENU_LEFTALIGNPOPUPMENU_CENTERALIGN и POPUPMENU_RIGHTALIGN, которые соответственно представляют режим отображения с x в качестве левой границы, x в качестве центра и x в качестве правой границы. Использование x в качестве левой границы является методом по умолчанию; другой набор значений используется для управления методом выбора пунктов меню, включая POPUPMENU_LEFTBUTTON и POPUPMENU_RIGHTBUTTON, которые соответственно указывают выбор щелчком левой кнопкой мыши и выбор щелчком левой/правой кнопки, и выбор левой кнопкой мыши является способом по умолчанию. Значение флагов получается путем объединения двух вышеуказанных наборов значений по ИЛИ. Например, если требуется выравнивание дисплея по левому краю и выбрана левая кнопка, то это должно быть:
флаги = POPUPMENU_LEFTALIGNORPOPUPMENU_LEFTBUTTON
x и y используются для определения положения всплывающего меню. По умолчанию используется положение точки мыши.
Другие свойства пунктов меню
Используйте буквенную клавишу ALT для активации меню верхнего уровня или используйте буквенную клавишу для активации пункта меню после активации меню. Вы должны научиться использовать &. & используется в атрибуте заголовка (Caption) пункта меню. Его использование и функции такие же, как и в программах Windows, скомпилированных на языке C.
Иногда вам нужно, чтобы пространство между меню верхнего уровня было больше или чтобы меню верхнего уровня отображалось в правом конце строки меню. В этом случае вам нужно использовать меню с атрибутом заголовка пробела. Если заголовок меню состоит из нескольких пробелов, то меню будет занимать место, соответствующее количеству пробелов в строке меню, а меню за ним также будут последовательно перемещаться назад, если свойство Visible этого меню равно; False , то его как будто не существует.
Принципы и примеры оформления окон
Ниже приведен пример технологии плавающего окна. Чтобы привлечь внимание пользователя или гарантировать, что окна, содержащие важную информацию, не будут закрыты другими окнами, используется технология плавающих окон для создания окна «TopMost». Конкретный метод:
(1) Добавьте в программу VB следующий оператор:
DeclareFunctionSetWindowPosLib"user"(Byvalh,Byvalhb,Byvalx,Byvaly,By
valcx, Byvalcy, Byvalf) AsInteger
GlobalConstSWP_NOMOVE=2
GlobalConstSWP_NOSIZE=1
GlobalConstHWND_TOPMOST=1
GlobalConstHWND_NOTOPMOST=2
GlobalConstFLAGS=SWP_NOMOVEOrSWP_NOSIZE
(2) Предположим, вы хотите установить форму frmExample так, чтобы окно всегда было впереди. Просто установите форму в Form_Load формы frmExample.
Добавьте в процесс следующий код:
Димуспех
успех = SetWindowPos (frmExample.hWnd, HWND_TOPMOST, 0,0,0,0,FLAGS)
Если вы хотите отменить функцию, которая всегда находится сверху, вы можете выполнить следующий код:
успех = SetWindowPos (frmExample.hWnd, HWND_NOTOPMOST, 0,0,0,0,FLAGS)
Успех не равен 0, что означает, что SetWindowPos выполнен успешно.
В программе MDI одно окно является родительским для всех остальных окон, а каждое дочернее окно выполняет относительно независимую функцию, подобно комбинации нескольких независимых инструментов. В этом отношении лучшими примерами являются MSWord и FileManager для Windows. ->