0 / 0 / 0
Регистрация: 01.06.2012
Сообщений: 4
|
|
1 | |
Хитрая проверка на ввод даты01.06.2012, 18:52. Показов 5784. Ответов 5
Метки нет (Все метки)
Всем здравствуйте.
Помогите, пожалуйста с таким моментом. Занялся написанием приложения, которое бы считало стаж работы человека. Вводится дата-1 - дата-2 и т.д (в обычные текстовые поля). Причем при завершении ввода второй даты, курсор переходит на следующие даты автоматом, т.е. табуляцию даже нажимать не приходится пользователю. Жмем кнопку "расчитать" - получаем общий стаж. Так вот, решил я значит для удобства сделать такую модернизацию. Дата вводится в формате ДД-ММ-ГГГГ. На данный момент дату необходимо вводить двузначную: например, 09.05.1985. Для удобства сделал так, чтобы не ставить точку между днями, месяцами и годом. Она ставится автоматом. Когда вводится год, то алгоритм построен так, что работа идет с двумя последними цифрами. Т.е. если вводится 85, то понятно, что имеется в виду 1985 год, а не 2085, который ещё не скоро наступит. Но, как оказывается такая "эргономика" не всегда удобна. Часто пользователь вводит 1985 с первыми цифрами "1" и "9". Получается, что программа по алгоритму пытается сделать год равным 2019, что тоже не верно, конечно же. Вот и собственно вопрос, как сделать исключение, что если введено 19 или 20 на месте года, то собственно правильно выставлялася год. Проблема в том, что если все идет "гладко", то пользователю приходится сделать 6 нажати клавиш - 2 на день, 2 на месяц, и 2 на год. А если пользователь не ищет легких путей и пытается все-таки ввести год из 4-ёх символов, то происходит "автопереход" на следующее текстовое поле и продолжается ввод уже не в том поле. Подскажите оптимальный алгоритм для моей проблемки. Заранее прошу прощения, если где-то выражался непрофессионально.
0
|
01.06.2012, 18:52 | |
Ответы с готовыми решениями:
5
Проверка на корректный ввод даты Проверка MaskEdit на ввод полной даты ввод даты дд.мм.гггг и проверка существует ли она ( например 30 февраля ) Запретить ввод даты в MaskedTextBox1 больше текущей даты |
Неадекват
1492 / 1230 / 246
Регистрация: 02.04.2010
Сообщений: 2,789
|
|
01.06.2012, 19:56 | 2 |
Месье знает толк в извращениях
Оптимальный алгоритм это использование DateTimePicker без всяких плясок с бубном.
0
|
0 / 0 / 0
Регистрация: 01.06.2012
Сообщений: 4
|
|
01.06.2012, 20:22 [ТС] | 3 |
Да, на словах всё выглядит немного стрёмно... но при работе намного удобнее использовать исключительно клавиатуру, особенно для дат... особенно если их много. А при использовании DateTimePicker работать удобнее исключительно мышкой. А заказчик, (собственно заказчиком выступает моя жена =) ), как говорится, всегда прав. Так то... так что упор на клаву, минимум нажатий, максимум удобства (если учесть, что пользователю удобнее работать клавой, а не мышкой). не всё так просто... как хотелось бы ...
0
|
660 / 530 / 137
Регистрация: 07.07.2011
Сообщений: 1,232
|
|
01.06.2012, 20:32 | 4 |
MaskEditBox.
0
|
Неадекват
1492 / 1230 / 246
Регистрация: 02.04.2010
Сообщений: 2,789
|
|
02.06.2012, 10:06 | 5 |
Вот как раз с клавиатуры с ним работать удобнее чем с группой TextBox'ов.
После получения фокуса, автоматически выделяется число, его можно ввести цифрами, далее стрелка вправо и стрелками вверх-вниз выбираем месяц (если установить формат Short, то будет чисто цифровая дата), опять стрелка вправо вводим год, при чем DateTimePicker сам разберет дату если ввели 2 цифры. Попробуйте. В этом контроле уже есть необходимый функционал.
0
|
0 / 0 / 0
Регистрация: 01.06.2012
Сообщений: 4
|
|
02.06.2012, 10:17 [ТС] | 6 |
2Дмитрий3241 - Спасибо, это то, что нужно. Единственная поправка - в .NET этот контрол называется MaskedTextBox. О нём написано тут: http://msdn.microsoft.com/ru-r... xtbox.aspx
2freeba. Спасибо за помощь и подсказку. В какой-то другой программе буду использовать DateTimePicker. Не сомневаюсь в его удобстве. Но в моем конкретном случае выберу MaskedTextBox. Он идеально подходит для моей цели. Спасибо всем, кто откликнулся.
0
|
02.06.2012, 10:17 | |
02.06.2012, 10:17 | |
Помогаю со студенческими работами здесь
6
Нужно настроить ввод даты в delphi в dbGrid, в ручную через edit. Добавление новой даты. Ввод даты Ввод даты Ввод даты Ввод даты Ввод даты Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |