Компонент ввода диапазона дат (постановка)
Необходимо создать простой и удобный визуальный компонент для ввода периода дат как набором с клавиатуры, так и путем выбора мышью.
Компонент должен представлять собой поле ввода TEdit справа от которого расположены три кнопки-пиктограмки для вызова выпадающих окон.
Ввод периода с помощью мыши
Диапазон дат можно указать мышью в выпадающих окнах следующими способами:
В окне выбора двух дат располагаются горизонтально два календаря. Календарь слева показывает начальную дату, справа -- конечную. Пользователь выбирает день сначала на одном календаре, затем на другом. Сразу после указания второго дня окно закрывается, а введенный период переносится в поле ввода. Если в поле ввода указан некоторый период, то при открытии выпадающего окна дни начала и окончания периода устанавливаются на соответствующих календарях.
В выпадающем окне стандартных периодов располагаются: список лет (вертикально); список месяцев (вертикально); список кварталов; список недель (матрица). Пользователь может кликнуть мышью по любому элементу, при этом соответствующий период (год, месяц, квартал, неделя) подставится в поле ввода. После выбора -- окно закрывается.
Третье выпадающее окно вертикально разделено на две части. В левой находится история периодов, которые выбирал пользователь. В правой части список шорткатов с подсказкой по каждому. Щелчек мышью по шорткату приводит к его срабатыванию.
Любое выпадающее окно можно закрыть без выбора периода клавишей Esc, либо кликнув мышью за его пределами.
Ввод периода с помощью клавиатуры
В поле ввода пользователю предоставляется несколько вариантов ввода временного отрезка:
Самый очевидный вариант -- ввод двух дат. Например, 01.01.2009-31.12.2009. Полный формат даты -- когда указан день, месяц и год. Сокращенный -- если хотя бы один из компонентов пропущен.