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