Практически любое приложение должно иметь меню, поскольку именно меню дает наиболее удобный доступ к функциям программы. Существует несколько различных типов меню:
• главное меню с выпадающими списками команд пунктов меню (разделов);
• каскадные меню, в которых разделу первичного меню ставится в соответствие список команд вторичного меню;
• всплывающие или контекстные меню, появляющиеся, если пользователь щелкает правой кнопкой мыши на каком-то элементе формы приложения.
Основное требование к меню — их стандартизация. Это требо¬вание относится ко многим аспектам меню: месту размещения заголовков меню и их пунктов, форме самих заголовков, клавишам быстрого доступа, организации каскадных меню. Цель стандартизации — облегчить пользователю работу с приложением с тем, чтобы пользователю не приходилось думать, в каком меню и как ему надо открыть или сохранить файл, как ему получить справку, как работать с буфером обмена Clipboard и т.д.
Начнем рассмотрение требований с размещения пунктов меню. Типичная полоса главного меню приложения приведена на рис. 1.

Рис.1
Состав пунктов меню зависит от конкретного приложения. Но размещение общепринятых пунктов меню должно быть стандартизированным. Обычно пункт меню Файл размещается слева в полосе главного меню, раздел справки — справа, перед ним в приложениях MDI размещается меню Окно и т.д. Главное меню должно также снабжаться инструментальной панелью (см. рис. 1), быстрые кнопки которой дублируют наиболее часто используемые команды меню. На этих кнопках надо использовать, по возможности, привычные картинки. В Delphi имеется множество изображений кнопок, но, к сожалению, они не всегда имеют привычный для пользователя рисунок.
По возможности стандартным должно быть и расположение команд в пунктах меню. На рис. 2 приведены распространенные варианты наборов команд в пунктах меню Файл — работа с файлами, Правка — работа с текстами, Формат – форматирование текста; Справка — просмотр справочных данных.

Рис. 2
В большинстве меню команда Выход всегда размещает¬ся последней в пункте Файл, а команда О программе..., содержащая раздел информации о версии про¬граммы — последней в пункте Справка.
Группы функционально связанных команд отделяются в выпадающих меню разделителями в виде горизонтальных линий, как показано на рис.2,а, 2,б, 2,г.
Названия пунктов и команд меню должны быть привычными для пользователя, достаточно краткими и понятными. Не следует использовать длинные фразы более двух слов, поскольку это перегружает экран и замедляет выбор пользователя. Названия пунктов и команд должны начинаться с заглавной буквы. Применительно к английским названиям существует требование, чтобы каждое слово тоже начиналось с заглавной буквы. Но применительно к русским названиям это правило не применяется.
Названия команд меню, связанных с вызовом диалоговых окон, должны заканчиваться многоточием, показывающим пользователю, что при выборе этого раздела ему предстоит установить в диалоге еще какие-то параметры (команды Открыть, Сохранить как на рис. 2,а и др.).
Команды, к которым относятся каскадные меню (рис. 3), должны заканчиваться символом ►, указывающим на наличие дочернего меню данного раздела.

Delphi ставит эту стрелку автоматически. Злоупотреблять каскадными меню не следует, так как пользователю не так просто до них добираться. Если в дочернем меню должно быть много команд, например связанных с какими-то опциями и настройками, то целесообразнее вместо этого дочернего меню предусмотреть диалоговое окно, в котором эти опции будут более обозримыми и доступными.
В каждом названии команды должен быть выделен подчеркиванием символ, соответствующий клавише быстрого доступа к команде (клавиша Alt плюс подчеркнутый символ).
Многим командам могут быть поставлены в соответствие «горячие» клавиши, позволяющие обратиться к команде, не открывая меню. Комбинации таких «горячих» клавиш должны быть традиционными. Например, команды вы¬резания, копирования и вставки фрагментов текста практически всегда имеют «горячие» клавиши Ctrl-X, Ctrl-C и Ctrl-V соответственно. Заданные сочетания клавиш отображаются в строках соответствующих команд меню (рис. 2,а и 2,б).
В Delphi предусмотрена возможность включать в меню пиктограммы, соответствующие некоторым командам. Но это требование не является обязательным.
Не все команды меню имеют смысл в любой момент работы пользователя с приложением. Например, если в приложении не открыт ни один документ, то бессмысленно выполнять команды редактирования в пункте Правка. Если в тексте документа ничего не изменялось, то бессмысленной является команда этого меню Отменить, отменяющая последнюю команду редактирования. Такие команды и пункты меню должны делаться временно недоступными или невидимыми. Это осуществляется заданием значения false свойствам команды Enabled или Visible соответственно. Различие между недоступными и невидимыми командами в том, что недоступная команда видна в меню, но отображается серым цветом, а невидимая команда просто исчезает из меню, причем нижележащие команды смыкаются, занимая ее место. Выбор того или иного варианта — дело вкуса и удобства работы пользователя. Вероятно, целиком пункты меню лучше делать невидимыми, а отдельные команды — недоступными. Например, пока ни один документ не открыт, пункт меню Правка можно сделать невидимым, чтобы он не отвлекал внимания пользователя. Команду Отменить этого пункта в соответствующих ситуациях лучше делать недоступной, чтобы пользователь видел, что такая команда в меню есть и ею можно будет воспользоваться в случае ошибки редактирования.
Многие компоненты (например, многострочные окна редактирования) должны иметь контекстные меню, всплывающие при щелчке на них правой кнопкой мыши и обычно дублирующие основные команды главного меню, относящиеся к данному компоненту. Кроме того, обычно желательно иметь в приложении панель состояния (см. строку внизу окна на рис. 1), в которой даются пользователю некоторые подсказки по работе.
|