Ограничивающие и неограничивающие элементы ввода
Любой элемент управления, ограничивающий набор значений, дос' тупных для ввода пользователем, является ограничивающим элемен- том ввода. Так, например, ползунок со шкалой значений от 0 до 100 является ограничивающим элементом ввода. Независимо от действий пользователя не может быть введено никакое число, выходящее за диапазон определенных программой значений. Тем самым пользова' тель просто не в состоянии ввести недопустимое значение, когда для ввода используется элемент управления с ограничениями.
И наоборот, простое текстовое поле может принять любые алфавитно' цифровые данные, введенные пользователем. Эта идиома открытого ввода – пример неограничивающего элемента ввода. Неограничиваю' щие элементы ввода позволяют пользователю без труда вводить недо' пустимые значения. Разумеется, впоследствии программа может от' клонить введенные данные, но за пользователем по'прежнему сохра' няется возможность ввода таких данных.
Проще говоря, ограничивающие элементы ввода должны использо' ваться везде, где необходимо ограничить множество допустимых значе' ний. Если программа требует ввести число между 7 и 35 и при этом дает возможность вводить числа в диапазоне от –1 000 000 до +1 000 000, она не сделает пользователя счастливее.
Люди предпочтут элемент управления, который имеет нижнюю допус' тимую границу, равную 7, и верхнюю границу, равную 35 (полезно указать на эти ограничения понятным пользователю способом). Поль' зователи умны, они сразу же оценят такое ограничение и будут за него благодарны.
Важно понимать, что мы говорим о качественном свойстве элемента ввода, а не о свойстве самих данных. Ограничивающий элемент ввода должен четко информировать пользователя (преимущественно визу' ально) о допустимых границах. Текстовое поле, которое отвергает ввод пользователя после того, как он выполнил ввод, не может счи' таться ограничивающим элементом управления. Это просто невежли- вый элемент управления.
Применяйте ограничивающие элементы управления для получения ограниченных данных.
Данные, которые нужны программам, обычно имеют допустимые пре' делы – и все же многие программы позволяют вводить числовые дан' ные с помощью неограничивающих элементов ввода. Когда пользова' тель непреднамеренно вводит значение, которое программа не может принять, она выводит окно с сообщением об ошибке. Тем самым она вызывает у пользователя раздражение, предлагая якобы существую' щие возможности. «Что бы вы хотели на десерт? У нас есть все!» – го' ворит программа. «Мороженое», – отвечаете вы. «Жаль, но у нас его нет», – говорит она. «Как насчет пирога?» – невинно спрашиваете вы.
«Не'а», – отвечает программа. «Пирожные?» – «Не'а!» – «Леденцы?» –
«Не'а!» – «Шоколад?» – «Не'а!» – «Что тогда у вас есть?!» – в гневе и расстройстве кричите вы. «Не сердитесь! – отвечает программа воз' мущенно. – У нас широкий ассортимент фруктовых компотов». Это на' глядная демонстрация того, что чувствует пользователь, когда мы да' ем ему неограничивающий элемент ввода для ввода данных с фиксиро' ванным диапазоном возможных значений. Пользователь вводит «17»,а мы вознаграждаем его за это сообщением об ошибке, которое гласит:
«Вы можете ввести значения из диапазона от 4 до 8». Это пример ужасно спроектированного пользовательского интерфейса. Намного лучше сделать так, чтобы элемент ввода автоматически ограничивал ввод числами 4, 5, 6, 7 и 8. Если множество ограниченных значений состоит из фрагментов текста, а не из чисел, по'прежнему можно ис' пользовать какой'то ползунок, или комбо'список, или простой спи' сок. На рис. 21.15 представлен пример ограничивающего ползунка, используемого Microsoft в диалоговом окне настройки параметров эк' рана Windows. Этот элемент работает как ползунок или полоса про' крутки, но имеет четыре дискретных позиции, которые представляют различные разрешения дисплея. А ведь здесь Microsoft с легкостью могла бы использовать нередактируемый комбо'список. Во многих случаях ползунок – хороший выбор, потому что он недвусмысленно сообщает о диапазоне допустимых для ввода значений. Поле со спис' ком по размерам немногим меньше, но оно не раскрывает свои карты,
Рис. 21.15. Ограничивающие элементы ввода дают пользователю возмож- ность вводить только допустимые значения. Они не позволят ввести недо- пустимое значение лишь для того, чтобы потом отклонить его. На этом рисунке показан ограничивающий элемент ввода – ползунок из диалогового окна настройки параметров экрана в Windows XP. Этот небольшой ползу- нок имеет четыре дискретных положения. При перемещении ползунка слева направо описание под ним изменяется с «800 на 600 точек» на «1024 на 768 точек», далее на «1280 на 1024 точек» и на «1400 на 1050 точек»
пока пользователь не щелкнет по нему, – такой вариант поведения ме' нее дружелюбен.
Если пользователь должен выразить выбор числовым значением в оп' ределенных границах, дайте ему элемент управления, сообщающий об этих границах и предотвращающий ввод недопустимых значений. Та' кую возможность дают ползунки. Хотя у ползунков имеются сущест' венные недостатки, в одной области они являют собой пример для под' ражания: ввод количественной информации аналоговым способом. Ползунки позволяют пользователю определять числовые значения в относительных терминах, а не в результате непосредственного ввода с клавиатуры. Иначе говоря, пользователь перемещает бегунок, опре' деляя его относительную позицию и тем самым – пропорциональное значение для использования внутри программы. Ползунки менее удобны для ввода точных значений, хотя во множестве программ они используются именно с этой целью. Для ввода точных значений лучше подходят счетчики (spinners).
Счетчики
Счетчики– это общепринятая форма элементов ввода, которые позво' ляют вводить числовые данные как с клавиатуры, так и с помощью мыши. Счетчик состоит из небольшого поля ввода и двух прикреплен' ных к нему кнопок половинной высоты (рис. 21.16). Благодаря счет' чикам грань между ограничивающими и неограничивающими эле' ментами ввода данных становится размытой.
Маленькие кнопки со стрелками позволяют пользователю изменять значение в поле редактирования небольшими шагами. Эти шаги могут выполняться до определенного предела: значение не может превысить максимум, установленный программой, или стать меньше установ' ленного минимума. Если пользователь пожелает внести значительное изменение за одно действие или ввести определенное число, он может сделать это за счет прямого ввода числа в поле редактирования – точно так же, как в любое другое поле ввода. К сожалению, поле редактиро' вания данного элемента управления не накладывает ограничений, пре' доставляя пользователю возможность вводить любые значения, в том числе далеко выходящие за рамки ограничений. В диалоговом окне
«Параметры страницы», показанном на рисунке, при вводе пользова' телем недопустимого значения программа будет вести себя так же, как и большинство других грубых программ: вывесит сообщение об ошиб' ке, которое в редких случаях сопровождается индикацией допусти' мых значений, и потребует, чтобы пользователь щелкнул по кнопке OK для продолжения работы.
В общем и целом счетчики – прекрасная идиома, которая вполне мо' жет использоваться вместо простых полей ввода в качестве ограничи' вающего элемента ввода. В главе 25 мы обсудим способы улучшения обработки ошибок в рамках элементов управления.
Рис. 21.16. Счетчики широко используются в диалоговом окне «Параметры страницы» в Microsoft Word. В верхней части окна вы можете наблюдать пять счетчиков. Щелчком по одной из маленьких кнопок со стрелками поль- зователь может увеличивать или уменьшать значение поля небольшими ша- гами. Если пользователь желает кардинально изменить значение счетчика за одно действие или ввести точное значение, он может отредактировать значение прямо в поле ввода. Кнопки со стрелками реализуют ограничение элемента ввода, тогда как поле редактирования этого не делает. Является ли счетчик при этом ограничивающим элементом управления?
Рукоятки и ползунки
Рукояткии ползунки– это идиомы, основанные на метафорах механи' ческого века – вращающихся ручках и линейно движущихся рыча' гах. Рукоятки очень эффективно расходуют экранное пространство, и оба этих элемента управления замечательно справляются с задачей обеспечения визуальной обратной связи по настройкам (рис. 21.17).
Если рукоятки реализованы некорректно, то ими может быть очень трудно манипулировать. Иногда программисты ошибочно заставляют пользователей водить курсором по дуге, что весьма непросто. Правиль' ная реализация рукояток должна позволять линейный ввод в двух из' мерениях: щелчок по рукоятке и перемещение курсора вверх или вправо должны увеличивать значение, а щелчок с перемещением вле' во или вниз – уменьшать его. Разумеется, этой идиоме пользователи должны будут научиться (иначе у них может возникнуть желание во' дить курсор по дуге), так что рукоятки лучше всего применять в спе' циализированных приложениях, где у пользователей есть время на ос'
Рис. 21.17. Модульный программный синтезатор Reaktor (компании Native Instruments) активно использует рукоятки и ползунки. Это удобные элементы интерфейса – и не просто потому, что музыканты и продюсеры знакомы с ними по аппаратным устройствам. Гораздо важнее то, что они дают пользователям наглядную и простую для понимания обратную связь, которая гораздо доступнее демонстрирует текущие настройки, нежели длинные списки чисел, являющиеся для композитора удручающим зрелищем
воение идиом. Ползунки часто являются предпочтительным выбором, поскольку визуально подчеркивают тот факт, что движение происхо' дит лишь вдоль одной оси. Благодаря своему компактному размеру и визуальным качествам (не говоря уже об истории), ползунки попу' лярны в приложениях для работы со звуком.
Ползунки и рукоятки применяются в основном в качестве ограничи' вающих элементов управления ввода, однако иногда используются (не факт, что корректно) в качестве элементов, управляющих отображени' ем данных. В большинстве ситуаций для перемещения информации внутри экрана полосы прокрутки предпочтительнее, поскольку они способны наглядно показывать объемы прокручиваемой области; у пол' зунков же с этим имеются некоторые проблемы. Однако ползунки – превосходное средство для действий, связанных с масштабированием, например для изменения масштаба карты или размера миниатюры фотографии.
Круговые манипуляторы
Круговой манипулятор –это разновидность рукоятки, но гораздо бо' лее простая в использовании. Экранные круговые манипуляторы по' хожи на колесо прокрутки мыши и ведут себя во многом так же. Они популярны в некоторых 3D'приложениях, поскольку компактны и не ограничивают ввод, что идеально подходит для определенных видов
панорамирования и масштабирования. В отличие от полосы прокрутки, круговой манипулятор не должен информировать пользователя о пропорциях, поскольку диапазон работы этого элемента управления – бесконечность. Имеет смысл связывать такие элементы управления с неограниченным движением в определенном направлении (например, с масштабированием) или с перемещением по закольцованным данным.