Компонент ввода диапазона дат (постановка)
В большинстве случаев при построении отчета или фильтрации массива документов пользователь указывает период дат. Сейчас в Гедымине применяются два компонента ввода даты для указания начального и конечного дня периода. Предлагается реализовать простой и удобный визуальный компонент для ввода периода дат как набором с клавиатуры, так и путем выбора мышью. Минимальный период -- один день. Ввод даты окончания периода меньшей даты начала не допускается.
Компонент должен представлять собой поле ввода TEdit справа от которого расположена кнопка для вызова выпадающего окна.
Ввод периода с помощью мыши
Диапазон дат можно указать мышью в выпадающем окне следующими способами:
Выпадающее окно разделено по вертикали на две части. В левой находится список выбора режима указания периода. В зависимости от режима справа располагается:
- Год. Календарь для выбора года.
- Квартал. Календарь для выбора года и квартала.
- Месяц. Календарь для выбора года и месяца.
- Неделя. Календарь для выбора года, месяца и недели.
- День. Календарь для выбора года. месяца, дня.
- Произвольный. Два календаря для выбора первого и последнего дня периода.
- Шорт-кат. Список доступных шорт-катов.
- История. Несколько последних периодов, выбранных пользователем.
После выбора периода окно закрывается. Выпадающее окно можно закрыть без выбора периода клавишей Esc, либо кликнув мышью за его пределами.
Ввод периода с помощью клавиатуры
В поле ввода пользователю предоставляется несколько вариантов ввода временного отрезка:
Самый очевидный вариант -- ввод двух дат. Например, 01.01.2009-31.12.2009. Полный формат даты -- когда указан день, месяц и год. Сокращенный -- если хотя бы один из компонентов пропущен.
| Сокращенная дата | Единственная дата | Первый параметр | Второй параметр |
|---|---|---|---|
| Год | 1 января указанного года - 31 декабря указанного года | 1 января указанного года | 31 декабря указанного года |
| Месяц | 1-е число указанного месяца текущего года - Последнее число указанного месяца текущего года | 1-е число указанного месяца текущего года | Последнее число указанного месяца текущего года |
| День | День текущего месяца текущего года | День текущего месяца текущего года | День текущего месяца текущего года |
| Год и месяц | 1-е число указанного месяца указанного года - Последнее число указанного месяца указанного года | 1-е число указанного месяца указанного года | Последнее число указанного месяца указанного года |
| День и месяц | День указанного месяца текущего года | День указанного месяца текущего года | День указанного месяца текущего года |
| День недели | День, соответствующий указанному дню текущей недели | Указанный день текущей недели | Указанный день текущей недели |