cxfilter.pas
来自「胜天进销存源码,国产优秀的进销存」· PAS 代码 · 共 2,243 行 · 第 1/5 页
PAS
2,243 行
end;
function TcxFilterDateOperator.IsExpression: Boolean;
begin
Result := True;
end;
function TcxFilterDateOperator.GetExpressionFilterText(const AValue: Variant): string;
var
AFieldName: string;
begin
AFieldName := CriteriaItem.GetFieldName;
if Date1 <> cxFilterNullDate then
Result := '(' + AFieldName + ' >= ' + GetExpressionValue(Date1) + ')'
else
Result := '';
if Date2 <> cxFilterNullDate then
begin
if Result <> '' then
Result := Result + ' AND ';
Result := Result + '(' + AFieldName + ' < ' + GetExpressionValue(Date2) + ')';
end;
end;
procedure TcxFilterDateOperator.PrepareDisplayValue(var DisplayValue: string);
begin
DisplayValue := '';
end;
{ Yesterday }
procedure TcxFilterYesterdayOperator.Prepare;
var
ANowDate: TDateTime;
begin
ANowDate := Date;
Date1 := ANowDate - 1;
Date2 := ANowDate;
end;
function TcxFilterYesterdayOperator.DisplayText: string;
begin
Result := cxSFilterString(@cxSFilterOperatorYesterday);
end;
{ Today }
procedure TcxFilterTodayOperator.Prepare;
var
ANowDate: TDateTime;
begin
ANowDate := Date;
Date1 := ANowDate;
Date2 := ANowDate + 1;
end;
function TcxFilterTodayOperator.DisplayText: string;
begin
Result := cxSFilterString(@cxSFilterOperatorToday);
end;
{ Tomorrow }
procedure TcxFilterTomorrowOperator.Prepare;
var
ANowDate: TDateTime;
begin
ANowDate := Date;
Date1 := ANowDate + 1;
Date2 := ANowDate + 2;
end;
function TcxFilterTomorrowOperator.DisplayText: string;
begin
Result := cxSFilterString(@cxSFilterOperatorTomorrow);
end;
{ LastNDays }
procedure TcxFilterLastNDaysOperator.Prepare;
begin
Date2 := Date;
if cxFilterIncludeTodayInLastNextDaysList then
Date2 := Date2 + 1;
Date1 := Date2 - DayCount;
end;
{ Last7Days }
function TcxFilterLast7DaysOperator.DayCount: Integer;
begin
Result := 7;
end;
function TcxFilterLast7DaysOperator.DisplayText: string;
begin
Result := cxSFilterString(@cxSFilterOperatorLast7Days);
end;
{ LastWeek }
procedure TcxFilterLastWeekOperator.Prepare;
var
ANowDate: TDateTime;
begin
ANowDate := Date;
Date1 := GetStartDateOfWeek(ANowDate) - 7;
Date2 := Date1 + 7;
end;
function TcxFilterLastWeekOperator.DisplayText: string;
begin
Result := cxSFilterString(@cxSFilterOperatorLastWeek);
end;
{ Last14Days }
function TcxFilterLast14DaysOperator.DayCount: Integer;
begin
Result := 14;
end;
function TcxFilterLast14DaysOperator.DisplayText: string;
begin
Result := cxSFilterString(@cxSFilterOperatorLast14Days);
end;
{ LastTwoWeeks }
procedure TcxFilterLastTwoWeeksOperator.Prepare;
begin
Date1 := GetStartDateOfWeek(Date) - 2 * 7;
Date2 := Date1 + 2 * 7;
end;
function TcxFilterLastTwoWeeksOperator.DisplayText: string;
begin
Result := cxSFilterString(@cxSFilterOperatorLastTwoWeeks);
end;
{ Last30Days }
function TcxFilterLast30DaysOperator.DayCount: Integer;
begin
Result := 30;
end;
function TcxFilterLast30DaysOperator.DisplayText: string;
begin
Result := cxSFilterString(@cxSFilterOperatorLast30Days);
end;
{ LastMonth }
procedure TcxFilterLastMonthOperator.Prepare;
var
ANowDate: TDateTime;
D, M, Y: Word;
begin
ANowDate := Date;
DecodeDate(ANowDate, Y, M, D);
if M > 1 then
begin
Date1 := EncodeDate(Y, M - 1, 1);
Date2 := EncodeDate(Y, M, 1);
end
else
begin
Date1 := EncodeDate(Y - 1, 12, 1);
Date2 := EncodeDate(Y, 1, 1);
end;
end;
function TcxFilterLastMonthOperator.DisplayText: string;
begin
Result := cxSFilterString(@cxSFilterOperatorLastMonth);
end;
{ LastYear }
procedure TcxFilterLastYearOperator.Prepare;
var
ANowDate: TDateTime;
D, M, Y: Word;
begin
ANowDate := Date;
DecodeDate(ANowDate, Y, M, D);
Date1 := EncodeDate(Y - 1, 1, 1);
Date2 := EncodeDate(Y, 1, 1);
end;
function TcxFilterLastYearOperator.DisplayText: string;
begin
Result := cxSFilterString(@cxSFilterOperatorLastYear);
end;
{ InPast }
procedure TcxFilterInPastOperator.Prepare;
begin
Date1 := cxFilterNullDate;
Date2 := Date;
end;
function TcxFilterInPastOperator.DisplayText: string;
begin
Result := cxSFilterString(@cxSFilterOperatorPast);
end;
{ ThisWeek }
procedure TcxFilterThisWeekOperator.Prepare;
var
ANowDate: TDateTime;
begin
ANowDate := Date;
Date1 := GetStartDateOfWeek(ANowDate);
Date2 := Date1 + 7;
end;
function TcxFilterThisWeekOperator.DisplayText: string;
begin
Result := cxSFilterString(@cxSFilterOperatorThisWeek);
end;
{ ThisMonth }
procedure TcxFilterThisMonthOperator.Prepare;
var
ANowDate: TDateTime;
D, M, Y: Word;
begin
ANowDate := Date;
DecodeDate(ANowDate, Y, M, D);
if M < 12 then
begin
Date1 := EncodeDate(Y, M, 1);
Date2 := EncodeDate(Y, M + 1, 1);
end
else
begin
Date1 := EncodeDate(Y, M, 1);
Date2 := EncodeDate(Y + 1, 1, 1);
end;
end;
function TcxFilterThisMonthOperator.DisplayText: string;
begin
Result := cxSFilterString(@cxSFilterOperatorThisMonth);
end;
{ ThisYear }
procedure TcxFilterThisYearOperator.Prepare;
var
ANowDate: TDateTime;
D, M, Y: Word;
begin
ANowDate := Date;
DecodeDate(ANowDate, Y, M, D);
Date1 := EncodeDate(Y, 1, 1);
Date2 := EncodeDate(Y + 1, 1, 1);
end;
function TcxFilterThisYearOperator.DisplayText: string;
begin
Result := cxSFilterString(@cxSFilterOperatorThisYear);
end;
{ NextNDays }
procedure TcxFilterNextNDaysOperator.Prepare;
begin
Date1 := Date;
if not cxFilterIncludeTodayInLastNextDaysList then
Date1 := Date1 + 1;
Date2 := Date1 + DayCount;
end;
{ Next7Days }
function TcxFilterNext7DaysOperator.DayCount: Integer;
begin
Result := 7;
end;
function TcxFilterNext7DaysOperator.DisplayText: string;
begin
Result := cxSFilterString(@cxSFilterOperatorNext7Days);
end;
{ NextWeek }
procedure TcxFilterNextWeekOperator.Prepare;
var
ANowDate: TDateTime;
begin
ANowDate := Date;
Date1 := GetStartDateOfWeek(ANowDate) + 7;
Date2 := Date1 + 7;
end;
function TcxFilterNextWeekOperator.DisplayText: string;
begin
Result := cxSFilterString(@cxSFilterOperatorNextWeek);
end;
{ Next14Days }
function TcxFilterNext14DaysOperator.DayCount: Integer;
begin
Result := 14;
end;
function TcxFilterNext14DaysOperator.DisplayText: string;
begin
Result := cxSFilterString(@cxSFilterOperatorNext14Days);
end;
{ NextTwoWeeks }
procedure TcxFilterNextTwoWeeksOperator.Prepare;
begin
Date1 := GetStartDateOfWeek(Date) + 7;
Date2 := Date1 + 2 * 7;
end;
function TcxFilterNextTwoWeeksOperator.DisplayText: string;
begin
Result := cxSFilterString(@cxSFilterOperatorNextTwoWeeks);
end;
{ Next30Days }
function TcxFilterNext30DaysOperator.DayCount: Integer;
begin
Result := 30;
end;
function TcxFilterNext30DaysOperator.DisplayText: string;
begin
Result := cxSFilterString(@cxSFilterOperatorNext30Days);
end;
{ NextMonth }
procedure TcxFilterNextMonthOperator.Prepare;
var
ANowDate: TDateTime;
D, M, Y: Word;
begin
ANowDate := Date;
DecodeDate(ANowDate, Y, M, D);
if M < 11 then
begin
Date1 := EncodeDate(Y, M + 1, 1);
Date2 := EncodeDate(Y, M + 2, 1);
end
else
if M = 11 then
begin
Date1 := EncodeDate(Y, 12, 1);
Date2 := EncodeDate(Y + 1, 1, 1);
end
else
if M = 12 then
begin
Date1 := EncodeDate(Y + 1, 1, 1);
Date2 := EncodeDate(Y + 1, 2, 1);
end;
end;
function TcxFilterNextMonthOperator.DisplayText: string;
begin
Result := cxSFilterString(@cxSFilterOperatorNextMonth);
end;
{ NextYear }
procedure TcxFilterNextYearOperator.Prepare;
var
ANowDate: TDateTime;
D, M, Y: Word;
begin
ANowDate := Date;
DecodeDate(ANowDate, Y, M, D);
Date1 := EncodeDate(Y + 1, 1, 1);
Date2 := EncodeDate(Y + 2, 1, 1);
end;
function TcxFilterNextYearOperator.DisplayText: string;
begin
Result := cxSFilterString(@cxSFilterOperatorNextYear);
end;
{ InFuture }
procedure TcxFilterInFutureOperator.Prepare;
begin
Date1 := Date + 1;
Date2 := cxFilterNullDate;
end;
function TcxFilterInFutureOperator.DisplayText: string;
begin
Result := cxSFilterString(@cxSFilterOperatorFuture);
end;
{ TcxCustomFilterCriteriaItem }
constructor TcxCustomFilterCriteriaItem.Create(AOwner: TcxFilterCriteriaItemList);
begin
inherited Create;
FParent := AOwner;
end;
destructor TcxCustomFilterCriteriaItem.Destroy;
begin
if FParent <> nil then
FParent.RemoveItem(Self);
inherited Destroy;
end;
procedure TcxCustomFilterCriteriaItem.Changed;
begin
Criteria.Changed;
end;
function TcxCustomFilterCriteriaItem.GetCriteria: TcxFilterCriteria;
begin
Result := Parent.Criteria;
end;
procedure TcxCustomFilterCriteriaItem.ReadData(AStream: TStream);
begin
end;
procedure TcxCustomFilterCriteriaItem.WriteData(AStream: TStream);
begin
end;
{ TcxFilterCriteriaItemList }
constructor TcxFilterCriteriaItemList.Create(AOwner: TcxFilterCriteriaItemList;
ABoolOperatorKind: TcxFilterBoolOperatorKind);
begin
inherited Create(AOwner);
FBoolOperatorKind := ABoolOperatorKind;
FItems := TList.Create;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?