cxcustomdata.pas
来自「胜天进销存源码,国产优秀的进销存」· PAS 代码 · 共 1,436 行 · 第 1/5 页
PAS
1,436 行
procedure Update; override;
property Destroying: Boolean read FDestroying;
public
constructor Create(ADataController: TcxCustomDataController); virtual;
destructor Destroy; override;
procedure Assign(Source: TPersistent; AIgnoreItemNames: Boolean = False); override;
procedure AssignEvents(Source: TPersistent); override;
function CreateValueList: TcxDataFilterValueList; virtual;
function FindItemByItemLink(AItemLink: TObject): TcxFilterCriteriaItem; override;
function IsFiltering: Boolean; virtual;
procedure RemoveItemByField(AField: TcxCustomDataField);
property DataController: TcxCustomDataController read FDataController;
published
property Active: Boolean read FActive write SetActive default False;
property OnGetValueList: TcxDataFilterGetValueListEvent read FOnGetValueList write FOnGetValueList;
end;
TcxDataFilterCriteriaClass = class of TcxDataFilterCriteria;
{ Filters }
TcxDataFilterList = class(TList)
private
function GetItem(Index: Integer): TcxDataFilterCriteria;
protected
procedure RemoveItemByField(AField: TcxCustomDataField);
public
procedure Clear; override;
property Items[Index: Integer]: TcxDataFilterCriteria read GetItem; default;
end;
{ Groups }
TcxDataGroupIndex = Integer;
TcxDataControllerGroups = class
private
FDataController: TcxCustomDataController;
function GetChildCount(DataGroupIndex: TcxDataGroupIndex): Integer;
function GetChildDataGroupIndex(ParentDataGroupIndex: TcxDataGroupIndex; ChildIndex: Integer): TcxDataGroupIndex;
function GetChildRecordIndex(ParentDataGroupIndex: TcxDataGroupIndex; ChildIndex: Integer): Integer;
function GetDataControllerInfo: TcxCustomDataControllerInfo;
function GetDataGroupIndexByRowIndex(RowIndex: Integer): TcxDataGroupIndex;
function GetDataGroups: TcxDataGroups;
function GetFieldGroupIndex(AField: TcxCustomDataField): Integer;
function GetGroupingItemCount: Integer;
function GetGroupingItemIndex(Index: Integer): Integer;
function GetGroupDisplayText(ADataGroupIndex: TcxDataGroupIndex): string;
function GetGroupValue(ADataGroupIndex: TcxDataGroupIndex): Variant;
function GetItemGroupIndex(AItemIndex: Integer): Integer;
function GetLevel(ADataGroupIndex: TcxDataGroupIndex): Integer;
function GetParentDataGroupIndex(ChildDataGroupIndex: TcxDataGroupIndex): TcxDataGroupIndex;
protected
function GetGroupRecordIndex(ADataGroupIndex: TcxDataGroupIndex): Integer;
property DataControllerInfo: TcxCustomDataControllerInfo read GetDataControllerInfo;
property DataGroups: TcxDataGroups read GetDataGroups;
property LevelCount: Integer read GetGroupingItemCount;
public
constructor Create(ADataController: TcxCustomDataController);
procedure ChangeExpanding(ARowIndex: Integer; AExpanded, ARecursive: Boolean);
procedure ChangeGrouping(AItemIndex, AGroupIndex: Integer);
procedure ClearGrouping;
procedure FullCollapse;
procedure FullExpand;
function GetDataGroupIndexByGroupValue(AParentDataGroupIndex: TcxDataGroupIndex;
const AGroupValue: Variant): TcxDataGroupIndex;
function HasAsParent(ARowIndex, AParentRowIndex: Integer): Boolean;
procedure LoadRecordIndexes(AList: TList; ADataGroupIndex: TcxDataGroupIndex);
procedure LoadRecordIndexesByRowIndex(AList: TList; ARowIndex: Integer);
property DataController: TcxCustomDataController read FDataController;
// Grouping
property FieldGroupIndex[AField: TcxCustomDataField]: Integer read GetFieldGroupIndex;
property GroupingItemCount: Integer read GetGroupingItemCount;
property GroupingItemIndex[Index: Integer]: Integer read GetGroupingItemIndex;
property ItemGroupIndex[ItemIndex: Integer]: Integer read GetItemGroupIndex;
// Navigation
property DataGroupIndexByRowIndex[RowIndex: Integer]: TcxDataGroupIndex read GetDataGroupIndexByRowIndex;
property Level[ADataGroupIndex: TcxDataGroupIndex]: Integer read GetLevel;
property ChildCount[DataGroupIndex: TcxDataGroupIndex]: Integer read GetChildCount; // for Level = 0 DataGroupIndex = -1
property ChildDataGroupIndex[ParentDataGroupIndex: TcxDataGroupIndex; ChildIndex: Integer]: TcxDataGroupIndex read GetChildDataGroupIndex;
property ChildRecordIndex[ParentDataGroupIndex: TcxDataGroupIndex; ChildIndex: Integer]: Integer read GetChildRecordIndex;
property ParentDataGroupIndex[ChildDataGroupIndex: TcxDataGroupIndex]: TcxDataGroupIndex read GetParentDataGroupIndex;
// Values
property GroupDisplayTexts[ADataGroupIndex: TcxDataGroupIndex]: string read GetGroupDisplayText;
property GroupValues[ADataGroupIndex: TcxDataGroupIndex]: Variant read GetGroupValue;
end;
{ Summary }
TcxCustomDataSummaryItem = class(TCollectionItem)
private
FField: TcxCustomDataField;
function GetItemLink: TObject;
procedure SetItemLink(Value: TObject);
protected
function GetDataController: TcxCustomDataController; virtual; abstract;
procedure ItemLinkChanging(AField: TcxCustomDataField); virtual;
public
procedure Assign(Source: TPersistent); override;
procedure BeginUpdate;
procedure EndUpdate;
property DataController: TcxCustomDataController read GetDataController;
property ItemLink: TObject read GetItemLink write SetItemLink;
property Field: TcxCustomDataField read FField;
end;
TcxSummaryKind = (skNone, skSum, skMin, skMax, skCount, skAverage);
TcxSummaryOption = (soNullIgnore, soSelectedRecords, soMultipleSelectedRecords);
TcxSummaryOptions = set of TcxSummaryOption;
TcxSummaryPosition = (spGroup, spFooter);
TcxSummaryProperty = (spFormat, spKind, spSorted);
TcxSummaryProperties = set of TcxSummaryProperty;
TcxSummaryValueType = (svtFloat, svtCurrency, svtDate);
TcxDataSummaryItemGetTextEvent = procedure(Sender: TcxDataSummaryItem;
const AValue: Variant; AIsFooter: Boolean; var AText: string) of object;
TcxDataSummaryItem = class(TcxCustomDataSummaryItem)
private
FFormat: string;
FKind: TcxSummaryKind;
FSorted: Boolean;
FOnGetText: TcxDataSummaryItemGetTextEvent;
function GetPosition: TcxSummaryPosition;
function GetSummaryItems: TcxDataSummaryItems;
procedure SetFormat(const Value: string);
procedure SetKind(Value: TcxSummaryKind);
procedure SetPosition(Value: TcxSummaryPosition);
procedure SetSorted(Value: Boolean);
protected
FPosition: TcxSummaryPosition;
function GetDataController: TcxCustomDataController; override;
function GetValueType(AVarType: TVarType): TcxSummaryValueType;
function IsCurrency(AVarType: TVarType): Boolean; virtual;
function IsDataBinded: Boolean; virtual;
function IsPositionStored: Boolean; virtual;
public
destructor Destroy; override;
procedure Assign(Source: TPersistent); override;
function DataField: TcxCustomDataField; virtual;
function FormatValue(const AValue: Variant; AIsFooter: Boolean): string; virtual;
property DataController: TcxCustomDataController read GetDataController;
property SummaryItems: TcxDataSummaryItems read GetSummaryItems;
property Sorted: Boolean read FSorted write SetSorted default False;
published
property Format: string read FFormat write SetFormat;
property Kind: TcxSummaryKind read FKind write SetKind default skNone;
property Position: TcxSummaryPosition read GetPosition write SetPosition stored IsPositionStored;
property OnGetText: TcxDataSummaryItemGetTextEvent read FOnGetText write FOnGetText;
end;
TcxDataSummaryItemClass = class of TcxDataSummaryItem;
TcxSummaryEventArguments = record
RecordIndex: Integer;
SummaryItem: TcxDataSummaryItem;
end;
TcxSummaryEventOutArguments = record
Value: Variant;
SummaryValue: Variant;
CountValue: Integer;
Done: Boolean;
end;
TcxSummaryEvent = procedure(ASender: TcxDataSummaryItems;
Arguments: TcxSummaryEventArguments;
var OutArguments: TcxSummaryEventOutArguments) of object;
TcxDataSummaryItems = class(TcxCollection)
private
FSummary: TcxDataSummary;
FOnSummary: TcxSummaryEvent;
function GetDataController: TcxCustomDataController;
function GetItem(Index: Integer): TcxDataSummaryItem;
procedure SetItem(Index: Integer; Value: TcxDataSummaryItem);
protected
procedure BeforeSortingChange(AItem: TcxDataSummaryItem; AValue: Boolean); virtual;
procedure ChangedView;
function GetItemPosition(AItem: TcxDataSummaryItem): TcxSummaryPosition; virtual;
function GetOwner: TPersistent; override;
function IndexOfField(AField: TcxCustomDataField): Integer;
function IsPositionStored(AItem: TcxDataSummaryItem): Boolean; virtual;
function ItemOfField(AField: TcxCustomDataField): TcxDataSummaryItem;
procedure Update(Item: TCollectionItem); override;
// simple summary routines
function AddDataItem(AItemIndex: Integer; APosition: TcxSummaryPosition): TcxDataSummaryItem;
procedure CheckItemEmpty(AItem: TcxDataSummaryItem);
procedure GetDataItemProperties(AItemIndex: Integer; APosition: TcxSummaryPosition;
AProperties: TcxSummaryProperties; var AFormat: string; var AKind: TcxSummaryKind;
var ASorted: Boolean);
function IsPropertiesEmpty(AProperties: TcxSummaryProperties; const AFormat: string;
AKind: TcxSummaryKind; ASorted: Boolean): Boolean; virtual;
procedure SetDataItemProperties(AItemIndex: Integer; APosition: TcxSummaryPosition;
AProperties: TcxSummaryProperties; const AFormat: string; AKind: TcxSummaryKind;
ASorted: Boolean);
procedure SetItemProperties(AItem: TcxDataSummaryItem; APosition: TcxSummaryPosition;
AProperties: TcxSummaryProperties; const AFormat: string; AKind: TcxSummaryKind;
ASorted: Boolean);
public
constructor Create(ASummary: TcxDataSummary; AItemClass: TcxDataSummaryItemClass); virtual;
function Add: TcxDataSummaryItem; overload;
function Add(AItemLink: TObject; APosition: TcxSummaryPosition;
AKind: TcxSummaryKind; const AFormat: string = ''): TcxDataSummaryItem; overload;
procedure Assign(Source: TPersistent); override;
procedure AssignEvents(Source: TPersistent); virtual;
function DefaultFormat(AValueType: TcxSummaryValueType; ASummaryKind: TcxSummaryKind; AIsFooter: Boolean): string; virtual;
procedure DeleteItems(AItemLink: TObject; APosition: TcxSummaryPosition);
function GetGroupText(const ASummaryValues: Variant): string; virtual;
function IndexOf(AItem: TcxDataSummaryItem): Integer;
function IndexOfItemLink(AItemLink: TObject): Integer;
function ItemOfItemLink(AItemLink: TObject): TcxDataSummaryItem;
// simple summary
function GetDataItem(AItemIndex: Integer; APosition: TcxSummaryPosition;
ACheckKind: Boolean = False; AKind: TcxSummaryKind = skNone): TcxDataSummaryItem; virtual;
function GetDataItemFormat(AItemIndex: Integer; APosition: TcxSummaryPosition): string;
function GetDataItemKind(AItemIndex: Integer; APosition: TcxSummaryPosition): TcxSummaryKind;
function GetDataItemSorted(AItemIndex: Integer; APosition: TcxSummaryPosition): Boolean;
procedure SetDataItemFormat(AItemIndex: Integer; APosition: TcxSummaryPosition; const Value: string);
procedure SetDataItemKind(AItemIndex: Integer; APosition: TcxSummaryPosition; Value: TcxSummaryKind);
procedure SetDataItemSorted(AItemIndex: Integer; APosition: TcxSummaryPosition; Value: Boolean);
property DataController: TcxCustomDataController read GetDataController;
property Items[Index: Integer]: TcxDataSummaryItem read GetItem write SetItem; default;
property Summary: TcxDataSummary read FSummary;
published
property OnSummary: TcxSummaryEvent read FOnSummary write FOnSummary;
end;
TcxDataFooterSummaryItems = class(TcxDataSummaryItems)
protected
function GetItemPosition(AItem: TcxDataSummaryItem): TcxSummaryPosition; override;
function IsPositionStored(AItem: TcxDataSummaryItem): Boolean; override;
end;
TcxDataGroupSummaryItems = class(TcxDataSummaryItems)
private
FBeginText: string;
FEndText: string;
FSeparator: string;
FOwner: TPersistent;
function IsBeginTextStored: Boolean;
function IsEndTextStored: Boolean;
function IsSeparatorStored: Boolean;
procedure SetBeginText(const Value: string);
procedure SetEndText(const Value: string);
procedure SetSeparator(const Value: string);
protected
procedure BeforeSortingChange(AItem: TcxDataSummaryItem; AValue: Boolean); override;
function GetOwner: TPersistent; override;
public
constructor Create(ASummary: TcxDataSummary; AItemClass: TcxDataSummaryItemClass); override;
procedure Assign(Source: TPersistent); override;
function GetGroupText(const ASummaryValues: Variant): string; override;
function SortedSummaryItem: TcxDataSummaryItem;
published
property BeginText: string read FBeginText write SetBeginText stored IsBeginTextStored;
property EndText: string read FEndText write SetEndText stored IsEndTextStored;
property Separator: string read FSeparator write SetSeparator stored IsSeparatorStored;
end;
TcxDataSummaryGroupItemLink = class(TcxCustomDataSummaryItem)
private
function GetSummaryGroupItemLinks: TcxDataSummaryGroupItemLinks;
protected
function GetDataController: TcxCustomDataController; override;
procedure ItemLinkChanging(AField: TcxCustomDataField); override;
public
property SummaryGroupItemLinks: TcxDataSummaryGroupItemLinks read GetSummaryGroupItemLinks;
end;
TcxDataSummaryGroupItemLinkClass = class of TcxDataSummaryGroupItemLink;
TcxDataSummaryGroupItemLinks = class(TcxCollection)
private
FSummaryGroup: TcxDataSummaryGroup;
function GetItem(Index: Integer): TcxDataSummaryGroupItemLink;
procedure SetItem(Index: Integer; Value: TcxDataSummaryGroupItemLink);
protected
function GetOwner: TPersistent; override;
function IndexOfField(AField: TcxCustomDataField): Integer;
function ItemOfField(AField: TcxCustomDataField): TcxDataSummaryGroupItemLink;
procedure Update(Item: TCollectionItem); override;
public
constructor Create(ASummaryGroup: TcxDataSummaryGroup; AItemClass: TcxDataSummaryGroupItemLinkClass); virtual;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?