Форум: "Потрепаться";
Текущий архив: 2005.12.25;
Скачать: [xml.tar.bz2];
ВнизВарианты решения задачи на проектирование UI Найти похожие ветки
← →
Piter © (2005-11-29 19:28) [40]arhis (29.11.05 18:51) [28]
И откуда только у некоторых программистов такие дурацкие вопросы только появляются
только из-за того, что они программисты, а не батонокидатели.
← →
Джо © (2005-11-29 19:37) [41]
> [33] Gero © (29.11.05 18:59)
> Незачем. Просто пользователи привыкли именно к такому варианту,
> к последовательности. А «умные» варианты могут запросто
> его запутать.
Надо полагать, статистика уже собрана? ;) На основании чего такой вывод?
Про специальный контрол-селектор тоже думал. Как мне показалось, будет неудобно вводить длинные интервалы. Представьте, что нужны будут данные за несколько лет, "с" и "по" определенную дату. Очень мелкий "ползунок" будет и большая погрешность при перетаскивании.
← →
Янис Прасол © (2005-11-29 19:40) [42]
> На основании чего такой вывод?
На основании личных ощущений, например.
> Про специальный контрол-селектор тоже думал. Как мне показалось,
> будет неудобно вводить длинные интервалы. Представьте, что
> нужны будут данные за несколько лет, "с" и "по" определенную
> дату. Очень мелкий "ползунок" будет и большая погрешность
> при перетаскивании.
Это точно. Нужны конкретные значения.
← →
vuk © (2005-11-29 19:53) [43]У нас для ввода периода есть специальный элемент управления.
Для начала поясню, что для удобства выделены несколько видов периодов:
1. год (вводится число)
2. квартал года (Год, номер квартала)
3. месяц (Год, месяц)
4. Произвольный (две даты)
5. За последние X дней (число дней)
Элемент управления представляет собой редактор с 3-мя кнопками. По нажатию на кнопку вываливается диалог, где есть PageControl c закладкой на каждый вид периода. Оставшиеся две кнопки предназначены для быстрого сдвига вперед и назад на интервал, который меняется в зависимости от выбранного вида периода. Например, если выбран вид периода "месяц", то нажатие на кнопки будет сдвигать период вперед или назад на месяц.
Примерно так...
← →
Antonn © (2005-11-29 19:54) [44]Янис Прасол © (29.11.05 18:22)
Вопрос: как поступать, если пользователь ввел начальную дату больше конечной?
я приравниваю вторую к первой. т.е. я могу задать дату одним кликом, а не выставляя две даты, имхо удобнее.
← →
GuAV © (2005-11-29 23:02) [45]
> Вариант №1 плох еще и тем, что такая пара полей не
> одна. Представьте, каково будет пользователю, если он
> допустил ошибки в нескольких сразу?
Он увидит только одно окно и фокус будет установлен на нужное поле.
> Гораздо лучше не дать ему возможности совершать
> некорректные действия.
Ну поставь dtpSince.MaxDate := dtpTo.Date и dtpTo.MinDate := dtpSince.Date . Вряд ли это кому понравится.
← →
Янис Прасол © (2005-11-29 23:26) [46]На основании советов постараюсь принять какое-то решение.
Всем ответившим спасибо.
← →
iZEN © (2005-11-30 00:15) [47]
> Янис Прасол © (29.11.05 18:22)
Классическая задачка из области проектирования удобного и дружественного пользовательского интерфейса.
Решение можно найти в книжке Джефа Раскина "Интерфейс".
Основные принципы:
1. Не позволять пользователю указывать неверные значения в силу невозможности произведения оных (у вас возможно).
2. Никакие диалоги типа "Это неверно! Повторите ввод." ненужны.
Возможное решение (по-моему): один слайдер шкалы времени с двумя физически непересекающимися движками, которые указывают на "Начальная дата" и "Конечная дата" соответственно; заданный интервал - расстояние между движками. И, конечно же, кнопка начала операции. Боюсь, что этот вариант возможен только в контролах Java Swing, для Windows нужно штудировать литературу.
← →
Gero © (2005-11-30 01:14) [48]
iZEN © (30.11.05 00:15)
> один слайдер шкалы времени с двумя физически непересекающимися
> движками
Подобный вариант уже обсуждали. Недостатки смотри в [41].
← →
КаПиБаРа © (2005-11-30 05:54) [49]
>Основные принципы:
> 1. Не позволять пользователю указывать неверные
> значения в силу невозможности произведения оных (у вас
>возможно).
> 2. Никакие диалоги типа "Это неверно! Повторите ввод."
> ненужны.
В соответствии с этими правилами.
1. Если в текущий момент времени введен некоректный диапазон кнопку "Продолжить" сделать неактивной.
2. Показать пользователю в чем проблема. Для этого вывести сообщение прямо над кнопкой, а лучше возле того контрола в котором введены некорректные значения. Для этого можно использовать всплывающую подсказку или специальный значек (как в MS Excel).
← →
ANB © (2005-11-30 09:30) [50]Ползунок - жутко неудобно.
Коррекцию контролов делал - не очень удобно, хотя если интервал, как правило, фиксированный - то это оправдано.
Нормальных идей 2 :
1. Сообщение об ошибке (лучше не окошко)
2. Поменять местами начало и конец.
Все стырено.
Кстати, во времена ЕС ЭВМ при написании программ для терминалов в виде формы ввода частенько использовался следующий прием :
При посылке данных в компьютер (нажатие ввода) данные проверялись в программе и, если что не так - выводилась строка об ошибке (моргала внизу экрана) и курсор устанавливался на место ошибки. Было довольно удобно. Когда пошли программы под ДОС на бейсике - жутко добивал построчный ввод.
Неактивные кнопки без объяснения ошибки жутко неудобны и потребуют написания и изучения пользователем толстого руководства. Пример - проект который сопровождается у нас. Пока разберешься, почему кнопка не активна и чего от тебя хотят - либо полконторы оббегаешь, либо час доку читать придется (или и то и другое).
← →
msguns © (2005-11-30 09:42) [51]>2. Не давать возможности нажать на кнопку, пока значения не будут введены верно (делать ее неактивной).
>3. Не давать возможности ввести конечную дату меньше начальной (вешаться на OnChange) и наоборот.
Страшно неудобный интерфейс, не позволяющий вводить данные в произвольном порядке, в т.ч. частично Есть одна прога из "Центра", которая требует строго последовательный ввод всех данных (порядка 30 полей) - жутко противная прога !
>4. При поиске менять местами границы интервала.
Вообще рулез ;))
>5. Игнорировать подобную некорректность, просто при поиске выдавать 0 результатов.
Ага, особенно на базе из нескольких десятков миллионов записей. Думать будет минут 10, а в это время юзер будет материть "тупую" прогу, ищущую документы "с февраля по январь".
Оптимальный способ ввода периода указал uk © (29.11.05 19:53) [43]
Очень удобно, быстро, понятно. Покрывает 100% потребности. Реализуется достаточно просто.
← →
vlad433 © (2005-11-30 09:52) [52]По-моему, проще всего в OnExit конечной даты проверять и выдавать сообщенние с фокусом на ней.
← →
msguns © (2005-11-30 09:56) [53]>vlad433 © (30.11.05 09:52) [52]
>По-моему, проще всего в OnExit конечной даты проверять и выдавать сообщенние с фокусом на ней.
Прочитай [51] (первый комментарий)
← →
vlad433 © (2005-11-30 10:08) [54][43]-сложнее и юзеру думать надо. А две даты обычно повторяются, в смысле при показе формы уже присвоены. Например бух считает обороты. Он их за день считает раз 100 и все время те же (для баланса). Что ему, каждый раз думать, что вводить ? :)
← →
КаПиБаРа © (2005-11-30 10:11) [55]msguns © (30.11.05 9:42) [51]
Оптимальный способ ввода периода указал uk © (29.11.05 19:53) [43]
Очень удобно, быстро, понятно. Покрывает 100% потребности. Реализуется достаточно просто.
vuk © (29.11.05 19:53) [43]
4. Произвольный (две даты)
Опять возвращаемся к нашему вопросу. Как реализовать ввод двух дат? :)
← →
ANB © (2005-11-30 13:02) [56]
> Опять возвращаемся к нашему вопросу. Как реализовать ввод
> двух дат? :)
Надо сделать специальный компонент для ввода периода.
← →
vuk © (2005-11-30 17:46) [57]to vlad433 © (30.11.05 10:08) [54]:
>сложнее и юзеру думать надо.
Ну... Юзеру думать всегда надо, просто так никто в фильтры не лезет, и значит уже подумал. В любом случае интервал дат не с потолка берется. А в данном элементе управления нужный интервал обычно всего выбирается в один клик мышкой, т.к. чаще всего выставлен интересующий пользователя вид периода и нужен только его сдвиг (например, навигация вперед или назад по дням или месяцам). Наличие же периодов типа "за x последних дней" приводит к тому, что интервал часто вообще не нужно выбирать - он уже нужный стоит при открытии пользователем формы. Дело в том, что как показала практика, самый распространенный фильтр - "за 1 последний день".
>Что ему, каждый раз думать, что вводить ? :)
А запомнить настройки формы - не судьба?
to КаПиБаРа © (30.11.05 10:11) [55]:
>Опять возвращаемся к нашему вопросу. Как реализовать ввод двух дат? :)
Два выпадающих календаря. Выбор во втором даты меньше, чем в первом или выбор в первом даты больше, чем во втором не проходит. То есть остается старое значение, никакой ругани. Выбор не самый быстрый из возможных, но с учетом того, что произвольный период реально используется реже всего, это не страшно.
Страницы: 1 2 вся ветка
Форум: "Потрепаться";
Текущий архив: 2005.12.25;
Скачать: [xml.tar.bz2];
Память: 0.57 MB
Время: 0.012 c