cxfilter.pas

来自「胜天进销存源码,国产优秀的进销存」· PAS 代码 · 共 2,243 行 · 第 1/5 页

PAS
2,243
字号

{********************************************************************}
{                                                                    }
{       Developer Express Visual Component Library                   }
{       ExpressDataController                                        }
{                                                                    }
{       Copyright (c) 1998-2008 Developer Express Inc.               }
{       ALL RIGHTS RESERVED                                          }
{                                                                    }
{   The entire contents of this file is protected by U.S. and        }
{   International Copyright Laws. Unauthorized reproduction,         }
{   reverse-engineering, and distribution of all or any portion of   }
{   the code contained in this file is strictly prohibited and may   }
{   result in severe civil and criminal penalties and will be        }
{   prosecuted to the maximum extent possible under the law.         }
{                                                                    }
{   RESTRICTIONS                                                     }
{                                                                    }
{   THIS SOURCE CODE AND ALL RESULTING INTERMEDIATE FILES            }
{   (DCU, OBJ, DLL, ETC.) ARE CONFIDENTIAL AND PROPRIETARY TRADE     }
{   SECRETS OF DEVELOPER EXPRESS INC. THE REGISTERED DEVELOPER IS    }
{   LICENSED TO DISTRIBUTE THE EXPRESSDATACONTROLLER AND ALL         }
{   ACCOMPANYING VCL CONTROLS AS PART OF AN EXECUTABLE PROGRAM ONLY. }
{                                                                    }
{   THE SOURCE CODE CONTAINED WITHIN THIS FILE AND ALL RELATED       }
{   FILES OR ANY PORTION OF ITS CONTENTS SHALL AT NO TIME BE         }
{   COPIED, TRANSFERRED, SOLD, DISTRIBUTED, OR OTHERWISE MADE        }
{   AVAILABLE TO OTHER INDIVIDUALS WITHOUT EXPRESS WRITTEN CONSENT   }
{   AND PERMISSION FROM DEVELOPER EXPRESS INC.                       }
{                                                                    }
{   CONSULT THE END USER LICENSE AGREEMENT FOR INFORMATION ON        }
{   ADDITIONAL RESTRICTIONS.                                         }
{                                                                    }
{********************************************************************}

unit cxFilter;

{$I cxVer.inc}

interface

uses
  Classes{$IFDEF DELPHI6}, Variants{$ENDIF};

type
  TcxFilterOperatorKind = (foEqual, foNotEqual, foLess, foLessEqual,
    foGreater, foGreaterEqual, foLike, foNotLike, foBetween, foNotBetween,
    foInList, foNotInList,
    foYesterday, foToday, foTomorrow,
    foLast7Days, foLastWeek, foLast14Days, foLastTwoWeeks, foLast30Days, foLastMonth, foLastYear, foInPast,
    foThisWeek, foThisMonth, foThisYear,
    foNext7Days, foNextWeek, foNext14Days, foNextTwoWeeks, foNext30Days, foNextMonth, foNextYear, foInFuture);
  TcxFilterOperatorKinds = set of TcxFilterOperatorKind;
  TcxFilterBoolOperatorKind = (fboAnd, fboOr, fboNotAnd, fboNotOr);

  TcxFilterCriteriaItemList = class;
  TcxFilterCriteriaItem = class;
  TcxFilterCriteria = class;

  { TcxFilterOperator
    CompareValues(): Value1 is Data Value, Value2 is CompareItem's Value }

  TcxFilterOperator = class
  private
    FCriteriaItem: TcxFilterCriteriaItem;
  protected
    function GetExpressionFilterText(const AValue: Variant): string; virtual;
    function GetExpressionValue(const AValue: Variant): string; virtual;
    procedure PrepareDisplayValue(var DisplayValue: string); virtual;
    procedure Prepare; virtual;
    function PrepareExpressionValue(const AValue: Variant; var DisplayValue: string): Boolean; virtual;
  public
    constructor Create(ACriteriaItem: TcxFilterCriteriaItem); virtual;
    function CompareValues(const AValue1, AValue2: Variant): Boolean; virtual; abstract;
    function DisplayText: string; virtual;
    function FilterText: string; virtual; abstract;
    function IsDescription: Boolean; virtual;
    function IsExpression: Boolean; virtual;
    function IsNullOperator: Boolean; virtual;
    property CriteriaItem: TcxFilterCriteriaItem read FCriteriaItem;
  end;

  TcxFilterOperatorClass = class of TcxFilterOperator;

  { TcxFilterEqualOperator }

  TcxFilterEqualOperator = class(TcxFilterOperator)
  protected
    function GetExpressionFilterText(const AValue: Variant): string; override;
  public
    function CompareValues(const AValue1, AValue2: Variant): Boolean; override;
    function DisplayText: string; override;
    function FilterText: string; override;
    function IsExpression: Boolean; override;
  end;

  { TcxFilterNotEqualOperator }

  TcxFilterNotEqualOperator = class(TcxFilterEqualOperator)
  protected
    function GetExpressionFilterText(const AValue: Variant): string; override;
  public
    function CompareValues(const AValue1, AValue2: Variant): Boolean; override;
    function DisplayText: string; override;
    function FilterText: string; override;
  end;

  { TcxFilterLessOperator }

  TcxFilterLessOperator = class(TcxFilterOperator)
  public
    function CompareValues(const AValue1, AValue2: Variant): Boolean; override;
    function DisplayText: string; override;
    function FilterText: string; override;
  end;

  { TcxFilterLessEqualOperator }

  TcxFilterLessEqualOperator = class(TcxFilterOperator)
  public
    function CompareValues(const AValue1, AValue2: Variant): Boolean; override;
    function DisplayText: string; override;
    function FilterText: string; override;
  end;

  { TcxFilterGreaterOperator }

  TcxFilterGreaterOperator = class(TcxFilterOperator)
  public
    function CompareValues(const AValue1, AValue2: Variant): Boolean; override;
    function DisplayText: string; override;
    function FilterText: string; override;
  end;

  { TcxFilterGreaterEqualOperator }

  TcxFilterGreaterEqualOperator = class(TcxFilterOperator)
  public
    function CompareValues(const AValue1, AValue2: Variant): Boolean; override;
    function DisplayText: string; override;
    function FilterText: string; override;
  end;

  { TcxFilterLikeOperator }

  TcxFilterLikeOperator = class(TcxFilterOperator)
  protected
    procedure PrepareDisplayValue(var DisplayValue: string); override;
  public
    function CompareValues(const AValue1, AValue2: Variant): Boolean; override;
    function DisplayText: string; override;
    function FilterText: string; override;
  end;

  { TcxFilterNotLikeOperator }

  TcxFilterNotLikeOperator = class(TcxFilterLikeOperator)
  protected
    function GetExpressionFilterText(const AValue: Variant): string; override;
  public
    function CompareValues(const AValue1, AValue2: Variant): Boolean; override;
    function DisplayText: string; override;
    function FilterText: string; override;
    function IsExpression: Boolean; override;
  end;

  { TcxFilterBetweenOperator }

  TcxFilterBetweenOperator = class(TcxFilterOperator)
  protected
    function GetExpressionFilterText(const AValue: Variant): string; override;
    procedure PrepareDisplayValue(var DisplayValue: string); override;
    function PrepareExpressionValue(const AValue: Variant; var DisplayValue: string): Boolean; override;
  public
    function CompareValues(const AValue1, AValue2: Variant): Boolean; override;
    function DisplayText: string; override;
    function FilterText: string; override;
    function IsDescription: Boolean; override;
    function IsExpression: Boolean; override;
  end;

  { TcxFilterNotBetweenOperator }

  TcxFilterNotBetweenOperator = class(TcxFilterBetweenOperator)
  protected
    function GetExpressionFilterText(const AValue: Variant): string; override;
  public
    function CompareValues(const AValue1, AValue2: Variant): Boolean; override;
    function DisplayText: string; override;
    function FilterText: string; override;
  end;

  { TcxFilterInListOperator }                                

  TcxFilterInListOperator = class(TcxFilterOperator)
  protected
    function GetExpressionFilterText(const AValue: Variant): string; override;
    procedure PrepareDisplayValue(var DisplayValue: string); override;
    function PrepareExpressionValue(const AValue: Variant; var DisplayValue: string): Boolean; override;
  public
    function CompareValues(const AValue1, AValue2: Variant): Boolean; override;
    function DisplayText: string; override;
    function FilterText: string; override;
    function IsDescription: Boolean; override;
    function IsExpression: Boolean; override;
  end;

  { TcxFilterNotInListOperator }

  TcxFilterNotInListOperator = class(TcxFilterInListOperator)
  protected
    function GetExpressionFilterText(const AValue: Variant): string; override;
  public
    function CompareValues(const AValue1, AValue2: Variant): Boolean; override;
    function DisplayText: string; override;
    function FilterText: string; override;
  end;

  { TcxFilterNullOperator }

  TcxFilterNullOperator = class(TcxFilterEqualOperator)
  protected
    procedure PrepareDisplayValue(var DisplayValue: string); override;
  public
    function CompareValues(const AValue1, AValue2: Variant): Boolean; override;
    function DisplayText: string; override;
    function IsNullOperator: Boolean; override;
  end;

  { TcxFilterNotNullOperator }

  TcxFilterNotNullOperator = class(TcxFilterNullOperator)
  public
    function CompareValues(const AValue1, AValue2: Variant): Boolean; override;
    function DisplayText: string; override;
    function FilterText: string; override;
  end;

  { TcxFilterDateOperator }

  TcxFilterDateOperator = class(TcxFilterOperator)
  private
    FDate1: TDateTime;
    FDate2: TDateTime;
  protected
    procedure PrepareDisplayValue(var DisplayValue: string); override;
    function GetExpressionFilterText(const AValue: Variant): string; override;
  public
    function CompareValues(const AValue1, AValue2: Variant): Boolean; override;
    function FilterText: string; override;
    function IsExpression: Boolean; override;
    property Date1: TDateTime read FDate1 write FDate1;
    property Date2: TDateTime read FDate2 write FDate2;
  end;

  { Yesterday }

  TcxFilterYesterdayOperator = class(TcxFilterDateOperator)
  protected
    procedure Prepare; override;
  public
    function DisplayText: string; override;
  end;

  { Today }

  TcxFilterTodayOperator = class(TcxFilterDateOperator)
  protected
    procedure Prepare; override;
  public
    function DisplayText: string; override;
  end;

  { Tomorrow }

  TcxFilterTomorrowOperator = class(TcxFilterDateOperator)
  protected
    procedure Prepare; override;
  public
    function DisplayText: string; override;
  end;

  { LastNDays }

  TcxFilterLastNDaysOperator = class(TcxFilterDateOperator)
  protected
    function DayCount: Integer; virtual; abstract;
    procedure Prepare; override;
  end;

  { Last7Days }

  TcxFilterLast7DaysOperator = class(TcxFilterLastNDaysOperator)
  protected
    function DayCount: Integer; override;
  public
    function DisplayText: string; override;
  end;

  { LastWeek }

  TcxFilterLastWeekOperator = class(TcxFilterDateOperator)
  protected
    procedure Prepare; override;
  public
    function DisplayText: string; override;
  end;

  { Last14Days }

  TcxFilterLast14DaysOperator = class(TcxFilterLastNDaysOperator)
  protected
    function DayCount: Integer; override;
  public
    function DisplayText: string; override;
  end;

  { LastTwoWeeks }

  TcxFilterLastTwoWeeksOperator = class(TcxFilterDateOperator)
  protected
    procedure Prepare; override;
  public
    function DisplayText: string; override;
  end;

  { Last30Days }

  TcxFilterLast30DaysOperator = class(TcxFilterLastNDaysOperator)
  protected
    function DayCount: Integer; override;
  public
    function DisplayText: string; override;
  end;

  { LastMonth }

  TcxFilterLastMonthOperator = class(TcxFilterDateOperator)
  protected
    procedure Prepare; override;
  public
    function DisplayText: string; override;
  end;

  { LastYear }

  TcxFilterLastYearOperator = class(TcxFilterDateOperator)
  protected
    procedure Prepare; override;
  public
    function DisplayText: string; override;
  end;
  
  { InPast }

  TcxFilterInPastOperator = class(TcxFilterDateOperator)
  protected
    procedure Prepare; override;
  public
    function DisplayText: string; override;
  end;

  { ThisWeek }

  TcxFilterThisWeekOperator = class(TcxFilterDateOperator)
  protected
    procedure Prepare; override;
  public
    function DisplayText: string; override;
  end;

  { ThisMonth }

  TcxFilterThisMonthOperator = class(TcxFilterDateOperator)
  protected
    procedure Prepare; override;
  public
    function DisplayText: string; override;
  end;
  
  { ThisYear }

  TcxFilterThisYearOperator = class(TcxFilterDateOperator)
  protected
    procedure Prepare; override;
  public
    function DisplayText: string; override;
  end;

  { NextNDays }

  TcxFilterNextNDaysOperator = class(TcxFilterDateOperator)
  protected
    function DayCount: Integer; virtual; abstract;
    procedure Prepare; override;
  end;

  { Next7Days }

  TcxFilterNext7DaysOperator = class(TcxFilterNextNDaysOperator)
  protected
    function DayCount: Integer; override;
  public
    function DisplayText: string; override;
  end;

  { NextWeek }

  TcxFilterNextWeekOperator = class(TcxFilterDateOperator)
  protected
    procedure Prepare; override;
  public
    function DisplayText: string; override;
  end;

  { Next14Days }

  TcxFilterNext14DaysOperator = class(TcxFilterNextNDaysOperator)
  protected
    function DayCount: Integer; override;
  public
    function DisplayText: string; override;
  end;

  { NextTwoWeeks }

  TcxFilterNextTwoWeeksOperator = class(TcxFilterDateOperator)
  protected
    procedure Prepare; override;
  public
    function DisplayText: string; override;
  end;

  { Next30Days }

  TcxFilterNext30DaysOperator = class(TcxFilterNextNDaysOperator)
  protected
    function DayCount: Integer; override;
  public
    function DisplayText: string; override;
  end;

  { NextMonth }

  TcxFilterNextMonthOperator = class(TcxFilterDateOperator)
  protected
    procedure Prepare; override;
  public
    function DisplayText: string; override;

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?