Компонент ввода диапазона дат (постановка)
SYSDBA (обсуждение | вклад) (→Требования) |
SYSDBA (обсуждение | вклад) (→Детали реализации) |
||
| Строка 45: | Строка 45: | ||
# Неделя - выбор недели по году из первой даты, если она есть. Выбирается из списка TListBox. | # Неделя - выбор недели по году из первой даты, если она есть. Выбирается из списка TListBox. | ||
# День - выбор дня по году из первой даты, если она есть. Выбирается из списка TListBox. | # День - выбор дня по году из первой даты, если она есть. Выбирается из списка TListBox. | ||
| + | |||
| + | === Ввод с клавиатуры === | ||
| + | |||
| + | Исходное состояние: курсор попадает в поле ввода. Оно либо пустое, либо находящийся в нем текст выделяется, так что вводимые символы заменят его. Пользователь начинает вводить цифры. Первые две введенные цифры трактуются как номер дня. После них автоматически подставляется разделитель. Пользователь может так же ввести одну только цифру и ввести разделитель самостоятельно. Аналогичным образом, следующие две цифры трактуются как номер месяца. | ||
=== Детали реализации === | === Детали реализации === | ||
Версия 22:11, 27 августа 2008
Содержание |
Требования
- Ввод единичной даты;
- Ввод произвольного диапазона дат;
- Быстрый выбор диапазона:
- Год;
- Полугодие;
- Квартал;
- Месяц;
- Неделя;
- Быстрый ввод с клавиатуры с подстановкой текущей даты (текущего дня, месяца, года), подобно тому, как сейчас подставляются текущий день месяц и год по нажатию на клавишу пробел в TxDateEdit;
- Использование метасимволов:
- c -- сегодня
- з -- завтра
- в -- вчера
- н -- текущая неделя
- пн -- прошлая неделя
- сн -- следующая неделя
- м -- текущий месяц
- пм -- прошлый месяц
- см -- следующий месяц
- к -- текущий квартал
- пк -- прошлый квартал
- ск -- следующий квартал
- г -- текущий год
- пг -- прошлый год
- сг -- следующий год
- Хранение последнего введенного значения. Причем, если был использован метосимвол, то сохранятся должен именно он, а не рассчитанные на основе его значения;
- Хранение истории введенных значений;
- Хранение последнего выбора пользователя (последней активной страницы в выпадающем окошке): ввод даты, диапазона, квартала, месяца и т.п.
- Возможность работы только с клавиатуры без помощи мыши;
- Компонент должен быть реализован ввиде автономного pas файла (группы pas файлов) и не иметь связей с кодом платформы Гедымин.
Визуальный интерфейс
Компонента должна представлять TCombobox или TPanel с расположенным на ней TCombobox, где в окошке редактирования производится ввод диапазона дат. Начальная дата и конечная дата разделяются символом '-'.
Для ввода единичной даты, достаточно, чтобы одна из дат диапазона была пустой. После клика мышкой по элементу в правой части окошка редактирования (или при помощи клавиши стрелка вниз), под окошком ввода дат должен появляться элемент TPageControl со следующими закладками:
- История - можно просмотреть и выбрать ранее введённые пользователем данные из списка TListBox.
- Произвольный выбор дат - можно выбрать даты диапазона из двух элементов-календарей TMonthCalendar.
- Год - выбор года из списка TListBox.
- Квартал - выбора квартала по году из первой даты, если она есть. Выбирается из списка TListBox.
- Месяц - выбор месяца по году из первой даты, если она есть. выбирается из списка TListBox.
- Неделя - выбор недели по году из первой даты, если она есть. Выбирается из списка TListBox.
- День - выбор дня по году из первой даты, если она есть. Выбирается из списка TListBox.
Ввод с клавиатуры
Исходное состояние: курсор попадает в поле ввода. Оно либо пустое, либо находящийся в нем текст выделяется, так что вводимые символы заменят его. Пользователь начинает вводить цифры. Первые две введенные цифры трактуются как номер дня. После них автоматически подставляется разделитель. Пользователь может так же ввести одну только цифру и ввести разделитель самостоятельно. Аналогичным образом, следующие две цифры трактуются как номер месяца.
Детали реализации
Визуальный компонент должен быть наследован от стандартного компонента TPanel.