...
...

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

Секреты 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


© Компьютерная газета

полезные ссылки
Аренда ноутбуков