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 + -
显示快捷键?