Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Обработка неверно введеного значения [D6, D7, WinXP]


Страницы:   1 2

venoel ©   (2008-12-11 12:59:00) 

Здравствуйте. Хочется услышать ваше мнения и советов по следующему вопросу.

Исходная ситуация. Есть элемент ввода. Пусть вводимое значение должно удовлетворять какому-то условию. Вопрос собственно в том, что делать, если введеное значение условию не удовлетворяет. В коллективе мнения разделились.

Мнение раз: Надо сообщать пользователю об ошибке и возвращать фокус ввода на элемент ввода (что на мой взгляд неудобно и лишает возможности воспользоваться другими элементами окна, до тех пор, пока не введешь "правильное" значение).

Мнение два: сообщать пользователю об ошибке, но позволять покинуть поле ввода (естественно с невозможностью все таки в дальнейшем записать неверное значение в БД).

Хотелось бы услышать, кто как решает данный момент.


venoel   (2008-12-15 10:04:00) [1]

Всем большое спасибо. Тоже придерживаюсь мнения, что можно/нужно проверять вводимое значение по мере его "поступления". Ну и есессно, перед нажатием "ОК".


ivak   (2008-12-14 13:39:00) [2]


> Германн ©   (14.12.08 00:48) [26]


жжёшь


Германн   (2008-12-14 00:48:00) [3]


> Loginov Dmitry ©   (13.12.08 17:46) [22]


> blackman ©   (14.12.08 00:03) [24]

Я бы сказал, что главное тут: можно ли что-то проверить при вводе данных не имея "списка допустимых конечных значений"? Отсюда согласно битовой логике вытекают 4 возможных варианта.
Теперь можно продолжить холивар :)


Loginov Dmitry   (2008-12-14 00:30:00) [4]

> предлагаю тему закрыть остановившись на [18]


+1


blackman   (2008-12-14 00:03:00) [5]

Помимо пароля подобных примеров может быть сколь угодно много.
Их не может быть много и не должно быть много. Если много, то логика программы неверна


ivak   (2008-12-13 20:44:00) [6]

[22]

согласен на все 100%
предлагаю тему закрыть остановившись на [18]


Loginov Dmitry   (2008-12-13 17:46:00) [7]

> А во всех остальныхслучаях надо предлагать выбор, а не
> ввод значений.


[18] ivak насчет пароля верно заметил. В данном случае никаких возможных значений предугадать нельзя (если конечно не использовать кэширование пароля). Помимо пароля подобных примеров может быть сколь угодно много. Но в некоторыхслучаях, если известен ограниченный набор допустимых значений, можно предложить пользователю их выбор.


blackman   (2008-12-13 17:34:00) [8]

Я не шучу. Пароль здесь ни при чем. А во всех остальных случаях надо предлагать выбор, а не ввод значений. Если известна логика проверки значений (как в данном вопросе) то скорее всего можно формировать эти значения (показывать варианты) по мере необходимости.
Т.е. не подсвечивать неверные, а подсказывать возможные верные.


ivak   (2008-12-12 23:30:00) [9]

см. [18] ))))))))))))))))))))


Loginov Dmitry   (2008-12-12 23:23:00) [10]

> Самый лучший вариант - не давать юзеру вводить вообще, а
> только предлагать выбрать какие-то значения. Впрочем, и
> это надо контролировать.


это что-то за гранью фантастики


ivak   (2008-12-12 22:59:00) [11]

ну да.
гениально
ListBox в котором будет три варианта пароля: 1111, q1w2e3, и qwerty да???
выбери верный...Х)))


blackman   (2008-12-12 22:50:00) [12]

Самый лучший вариант - не давать юзеру вводить вообще, а только предлагать выбрать какие-то значения. Впрочем, и это надо контролировать.


Loginov Dmitry   (2008-12-12 22:50:00) [13]

> if pos('<какойто там символ который ты не хочешь>', edit1.text)
> then begin
>    label1.font.color := clRed;
>    label1.caption := 'Некорректный ввод';
>    label1.visible := true;
> end;


Видел аналогичное решение: напротив поля с неверными данными появляется анимированная иконка "стоп". Она мигает, привлекая внимание, наводишь мышкой, появляется всплывающая подсказка, содержащая сведения об ошибке.


ivak   (2008-12-12 22:22:00) [14]

как только юзер введёт неправильное, то

if pos('<какойто там символ который ты не хочешь>', edit1.text) then begin
    label1.font.color := clRed;
    label1.caption := 'Некорректный ввод';
    label1.visible := true;
end;


DVM   (2008-12-12 21:11:00) [15]


> venoel

Самое лучшее, если корректность ввода данных будет проверяться сразу по мере их ввода. Места ошибок должны подсвечиваться (например цвет, хинт и т.д.) и кнопка OK просто недоступна, до ввода корректных данных. Так юзеру понятнее - что то не дает ему нажать кнопку ок, а подсказки объясняют причину. Еще лучше не давать пользователю вводить некорректные данные, но не тупо не давать, а выдавать подсказки по поводу ввода.


Loginov Dmitry   (2008-12-12 20:54:00) [16]

> Хотелось бы услышать, кто как решает данный момент.


Обычно подключаю модуль Hints.pas, и при нажатии "ОК" проверяю корректность введенных данных. В модуле есть функция ShowErrorHintEx(), которая автоматически устанавливает фокус на заданный компонент, показывает всплывающую подсказку с сообщением об ошибке, и прерывает выполнение кода с помощью Abort(). Удобно. Никаких лишних телодвижений операторам делать не приходится (наверно =).


Германн   (2008-12-12 00:30:00) [17]


> venoel   (11.12.08 14:12) [7]
>
> не, тут вопрос не в "гарантии", а именно в "поведении" программы.
>
>

А как программа себя ведёт? Если программа позволяет с помощью клавиатуры и только с помощью клавиатуры вводить всенеобходимые данные для записи в БД, тогда я за проверку каждого значения в OnExit. Типа проверки орфографии в Ворде и т.п.


Медвежонок Пятачок   (2008-12-11 16:46:00) [18]

это если кроме него никому этот документ нафих не нужен )

чаще получается, что такая программа становится ненужной.


clickmaker   (2008-12-11 16:44:00) [19]

> [8] Медвежонок Пятачок ©   (11.12.08 16:38)
> юзер имеет право начать ввод документа в понедельник, а
> закончить в пятницу

это если кроме него никому этот документ нафих не нужен )


Медвежонок Пятачок   (2008-12-11 16:39:00) [20]

особенно если полей ввода не два-три


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо