![]() |
|
... Секреты Delphi. Отбор данных за месяц Завершим тему автоматизации выбора данных за заданный период функцией, которая формирует диалоговое окно, позволяющее выбрать данные за определенный месяц. Для этого создадим новую модальную форму, наследующую форму TfrmModal (КГ №32, 2003). Добавим фрейм с кнопками "Готово" и "Отмена" (КГ №39, 2003). Выбор требуемого месяца будем осуществлять при помощи компонента TComboBox. В дизайнере свойства Items построчно добавим в список все 12 месяцев года. Составляющую года удобно выбирать при помощи компоненты TRxSpinEdit, которая содержит две кнопки, позволяющие менять год при помощи мыши. Пример возможного дизайна диалогового окна показан на рисунке. ![]() Код созданной функции: //Функция возвращает true при подтверждении выбора месяца. При этом в aFirstDay возвращается 1-е число выбранного месяца function SelectMonth(var aFirstDay: TDate Time):boolean; var fYear, fMonth, fDay: Word; begin result:=false; try DecodeDate(aFirstDay, fYear, fMonth, fDay); if Not Assigned(frmSelectMonth) then Application.CreateForm(TfrmSelect Month,frmSelectMonth); //Индекс начинается с 0 frmSelectMonth.cbMonthFromList. ItemIn-dex:=fMonth — 1; frmSelectMonth.spedtYearFrom.Value: = fYear; frmSelectMonth.ShowModal; if frmSelectMonth.ModalResult=mrOk then begin fMonth:=frmSelectMonth.cbMonth From List.ItemIndex+1; fYear:=frmSelectMonth.spedtYear From. 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 и привести к требуемому формату. Сергей Бердачук, Berdachuk@tochka.by © Компьютерная газета
|
|