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