BERDAFLEX Software Systems
Главная > Delphi > Отбор данных за месяц

Отбор данных за месяц

История переиздания
Издание 1.0 2003.11.11 Сергей Бердачук

Завершим тему автоматизации выбора данных за заданный период функцией, которая формирует диалоговое окно, позволяющее выбрать данные за определенный месяц.

Для этого создадим новую модальную форму, наследующую форму TfrmModal (см. статью "Работа с модальными формами"). Добавим фрейм с кнопками «Готово» и «Отмена» (см. статью "Работа с фреймами"). Выбор требуемого месяца будем осуществлять при помощи компонента TComboBox. В дизайнере свойства Items, построчно добавим в список все 12 месяцев года. Составляющую года удобно выбирать при помощи компоненты TRxSpinEdit, которая содержит две кнопки, позволяющие менять год при помощи мыши. Пример возможного дизайна диалогового окна показан на рисунке.

Рисунок 1. Диалог выбора месяца и года

Диалог выбора месяца и года

Код созданной функции:

//Функция фозвращает true при подтверждении выбора месяца
//При этом в aFirstDay возвращается 1-е число выбранного месяца
function SelectMonth(var aFirstDay: TDateTime):boolean;
var
  fYear, fMonth, fDay: Word;
begin
  result:=false;
  try
    DecodeDate(aFirstDay, fYear, fMonth, fDay);
    if Not Assigned(frmSelectMonth) then
       Application.CreateForm(TfrmSelectMonth,frmSelectMonth);
    frmSelectMonth.cbMonthFromList.ItemIndex:=fMonth - 1;
    frmSelectMonth.spedtYearFrom.Value:= fYear;
    frmSelectMonth.ShowModal;
    if frmSelectMonth.ModalResult=mrOk  then
      begin
        fMonth:=frmSelectMonth.cbMonthFromList.ItemIndex+1;
        fYear:=frmSelectMonth.spedtYearFrom.AsInteger;
        aFirstDay:=EncodeDate(fYear, fMonth, 1);
        result:=true;
      end
    else
      result:=false;
  finally
    FreeAndNil(frmSelectMonth);
  end;
end;

Пример вызова созданной функции:

gPeriodFrom:=Now;
if SelectMonth(gPeriodFrom) then
  dmReports.CreateWareMovementReport(gPeriodFrom);

При успешном подтверждении выбора, функция возвращает 1-е число месяца типа TDateTime. Извлечь составляющие месяца и года не составляет труда при помощи функции DecodeDate и привести к требуемому формату.

Скачать модуль bs_lib

Rambler's Top100 Рейтинг@Mail.ru