0 / 0 / 0
Регистрация: 01.06.2012
Сообщений: 4
1

Хитрая проверка на ввод даты

01.06.2012, 18:52. Показов 5784. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем здравствуйте.
Помогите, пожалуйста с таким моментом. Занялся написанием приложения, которое бы считало стаж работы человека. Вводится дата-1 - дата-2 и т.д (в обычные текстовые поля). Причем при завершении ввода второй даты, курсор переходит на следующие даты автоматом, т.е. табуляцию даже нажимать не приходится пользователю. Жмем кнопку "расчитать" - получаем общий стаж. Так вот, решил я значит для удобства сделать такую модернизацию. Дата вводится в формате ДД-ММ-ГГГГ. На данный момент дату необходимо вводить двузначную: например, 09.05.1985. Для удобства сделал так, чтобы не ставить точку между днями, месяцами и годом. Она ставится автоматом. Когда вводится год, то алгоритм построен так, что работа идет с двумя последними цифрами. Т.е. если вводится 85, то понятно, что имеется в виду 1985 год, а не 2085, который ещё не скоро наступит. Но, как оказывается такая "эргономика" не всегда удобна. Часто пользователь вводит 1985 с первыми цифрами "1" и "9". Получается, что программа по алгоритму пытается сделать год равным 2019, что тоже не верно, конечно же. Вот и собственно вопрос, как сделать исключение, что если введено 19 или 20 на месте года, то собственно правильно выставлялася год. Проблема в том, что если все идет "гладко", то пользователю приходится сделать 6 нажати клавиш - 2 на день, 2 на месяц, и 2 на год. А если пользователь не ищет легких путей и пытается все-таки ввести год из 4-ёх символов, то происходит "автопереход" на следующее текстовое поле и продолжается ввод уже не в том поле. Подскажите оптимальный алгоритм для моей проблемки. Заранее прошу прощения, если где-то выражался непрофессионально.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.06.2012, 18:52
Ответы с готовыми решениями:

Проверка на корректный ввод даты
помогите придумать исключения для даты class date { public double x { get; set; } ...

Проверка MaskEdit на ввод полной даты
Добрый день! Вопрос по поводу проверки введена ли полная дата в MaskEdit: Есть MaskEdit с...

ввод даты дд.мм.гггг и проверка существует ли она ( например 30 февраля )
помогите с кодом , ни как не разберусь а завтра экзамен (( Вводим дд.мм.гггг с помощью...

Запретить ввод даты в MaskedTextBox1 больше текущей даты
На форме MaskedTextBox1 с маской под короткую дату, то есть __.__.____ Как запретить ввод в это...

5
Неадекват
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
Цитата Сообщение от sar_ultima Посмотреть сообщение
А при использовании DateTimePicker работать удобнее исключительно мышкой.
Вот как раз с клавиатуры с ним работать удобнее чем с группой 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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.06.2012, 10:17
Помогаю со студенческими работами здесь

Нужно настроить ввод даты в delphi в dbGrid, в ручную через edit. Добавление новой даты.
Добрый день. Прошу о помощи. У меня на форме есть dbGrid. Мне нужно, чтобы третья колонка была...

Ввод даты
Здравствуйте! Помогите с идеями, как в консольном окне организовать ввод даты в формате год.месяц....

Ввод даты
Доброе утро! Помогите, пожалуйста, в таком вопросе: нужно хранить год производства...

Ввод даты
Привет. Возникла проблема. Нужно вручную ввести определенную дату, а после отнять её от текущей и...

Ввод даты
Привет! У меня возникла проблема :cry:. Нужно чтоб пользователь ввел с экрана дату чтоб в...

Ввод даты
Всем привет помогите организовать ввод даты с клавиатуры(проверки тапа -31 февраля пока не надо)...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru