cxcustomdata.pas
来自「胜天进销存源码,国产优秀的进销存」· PAS 代码 · 共 1,436 行 · 第 1/5 页
PAS
1,436 行
function Add: TcxDataSummaryGroupItemLink;
function IndexOfItemLink(AItemLink: TObject): Integer;
function ItemOfItemLink(AItemLink: TObject): TcxDataSummaryGroupItemLink;
property Items[Index: Integer]: TcxDataSummaryGroupItemLink read GetItem write SetItem; default;
property SummaryGroup: TcxDataSummaryGroup read FSummaryGroup;
end;
TcxDataSummaryGroup = class(TCollectionItem)
private
FItemLinks: TcxDataSummaryGroupItemLinks;
FSummaryItems: TcxDataGroupSummaryItems;
function GetItemLinks: TcxDataSummaryGroupItemLinks;
function GetSummaryGroups: TcxDataSummaryGroups;
procedure SetItemLinks(Value: TcxDataSummaryGroupItemLinks);
procedure SetSummaryItems(Value: TcxDataGroupSummaryItems);
public
constructor Create(Collection: TCollection); override;
destructor Destroy; override;
procedure Assign(Source: TPersistent); override;
property SummaryGroups: TcxDataSummaryGroups read GetSummaryGroups;
published
property Links: TcxDataSummaryGroupItemLinks read GetItemLinks write SetItemLinks;
property SummaryItems: TcxDataGroupSummaryItems read FSummaryItems write SetSummaryItems;
end;
TcxDataSummaryGroups = class(TcxCollection)
private
FSummary: TcxDataSummary;
function GetItem(Index: Integer): TcxDataSummaryGroup;
procedure SetItem(Index: Integer; Value: TcxDataSummaryGroup);
protected
function GetOwner: TPersistent; override;
procedure Update(Item: TCollectionItem); override;
public
constructor Create(ASummary: TcxDataSummary);
function Add: TcxDataSummaryGroup;
function FindByItemLink(AItemLink: TObject): TcxDataSummaryGroup;
property Summary: TcxDataSummary read FSummary;
property Items[Index: Integer]: TcxDataSummaryGroup read GetItem write SetItem; default;
end;
TcxAfterSummaryEvent = procedure(ASender: TcxDataSummary) of object;
TcxDataSummary = class(TPersistent)
private
FDataController: TcxCustomDataController;
FDefaultGroupSummaryItems: TcxDataGroupSummaryItems;
FDestroying: Boolean;
FFooterSummaryItems: TcxDataFooterSummaryItems;
FFooterSummaryValues: Variant; // array of Variant
FInAfterSummary: Boolean;
FLockCount: Integer;
FOptions: TcxSummaryOptions;
FSetCustomSummary: Boolean;
FSummaryGroups: TcxDataSummaryGroups;
FOnAfterSummary: TcxAfterSummaryEvent;
function GetFooterSummaryValue(Index: Integer): Variant;
function GetFooterSummaryText(Index: Integer): string;
function GetGroupSummaryItems(Level: Integer): TcxDataGroupSummaryItems;
function GetGroupSummaryText(RowIndex: Integer): string;
function GetGroupSummaryDisplayValue(RowIndex, Level, Index: Integer): Variant;
function GetGroupSummaryValue(DataGroupIndex: TcxDataGroupIndex; Index: Integer): Variant;
function GetGroupFooterIndexOfItemLink(Level: Integer; ItemLink: TObject): Integer;
function GetGroupFooterSummaryText(RowIndex, Level, Index: Integer): string;
function GetOptions: TcxSummaryOptions;
procedure SetDefaultGroupSummaryItems(Value: TcxDataGroupSummaryItems);
procedure SetFooterSummaryItems(Value: TcxDataFooterSummaryItems);
procedure SetFooterSummaryValue(Index: Integer; Value: Variant);
procedure SetGroupSummaryDisplayValue(RowIndex, Level, Index: Integer; const Value: Variant);
procedure SetGroupSummaryValue(DataGroupIndex: TcxDataGroupIndex; Index: Integer; const Value: Variant);
procedure SetOptions(Value: TcxSummaryOptions);
procedure SetSummaryGroups(Value: TcxDataSummaryGroups);
protected
procedure BeginCalculateSummary(ASummaryItems: TcxDataSummaryItems;
var ACountValues: TcxDataSummaryCountValues; var ASummaryValues: TcxDataSummaryValues); virtual;
procedure CalculateSummary(ASummaryItems: TcxDataSummaryItems;
ABeginIndex, AEndIndex: Integer; var ACountValues: TcxDataSummaryCountValues;
var ASummaryValues: TcxDataSummaryValues; var SummaryValues: Variant); virtual;
procedure Changed(ARedrawOnly: Boolean); virtual;
procedure DoAfterSummary; virtual;
procedure DoFinishSummaryValue(ASummaryItem: TcxDataSummaryItem;
var SummaryValue: Variant; var CountValue: Integer); virtual;
procedure DoSummaryValue(ASummaryItem: TcxDataSummaryItem; ARecordIndex: Integer;
var SummaryValue: Variant; var CountValue: Integer); virtual;
procedure EndCalculateSummary(ASummaryItems: TcxDataSummaryItems;
var ACountValues: TcxDataSummaryCountValues; var ASummaryValues: TcxDataSummaryValues;
var SummaryValues: Variant); virtual;
function GetGroupSummaryValues(ADataGroupIndex: TcxDataGroupIndex): PVariant;
function GetOwner: TPersistent; override;
function GetRecordIndex(ARecordListIndex: Integer): Integer; virtual;
function GetSummaryGroupItemLinkClass: TcxDataSummaryGroupItemLinkClass; virtual;
function GetSummaryItemClass: TcxDataSummaryItemClass; virtual;
function IsValidSummaryValuesIndex(const ASummaryValues: Variant; AIndex: Integer): Boolean; virtual;
procedure Update(ARedrawOnly: Boolean); virtual;
property Destroying: Boolean read FDestroying;
property LockCount: Integer read FLockCount;
public
constructor Create(ADataController: TcxCustomDataController); virtual;
destructor Destroy; override;
procedure Assign(Source: TPersistent); override;
procedure AssignEvents(Source: TPersistent); virtual;
procedure BeginUpdate;
procedure BeginCalculate; virtual;
procedure EndCalculate; virtual;
procedure Calculate; virtual;
procedure CalculateFooterSummary; virtual;
procedure CalculateGroupSummary; virtual;
procedure CancelUpdate;
procedure EndUpdate;
function GetGroupSummaryInfo(ARowIndex: Integer; var ASummaryItems: TcxDataSummaryItems;
var ASummaryValues: PVariant): Boolean;
function GetPatternSummaryItems(APatternSummary: TcxDataSummary; ASummaryItems: TcxDataSummaryItems): TcxDataSummaryItems;
procedure Recalculate;
procedure RemoveItemByField(AField: TcxCustomDataField);
property DataController: TcxCustomDataController read FDataController;
property FooterSummaryValues[Index: Integer]: Variant read GetFooterSummaryValue write SetFooterSummaryValue;
property FooterSummaryTexts[Index: Integer]: string read GetFooterSummaryText;
property GroupFooterIndexOfItemLink[Level: Integer; ItemLink: TObject]: Integer read GetGroupFooterIndexOfItemLink;
property GroupSummaryItems[Level: Integer]: TcxDataGroupSummaryItems read GetGroupSummaryItems;
// only for View
property GroupFooterSummaryTexts[RowIndex, Level, Index: Integer]: string read GetGroupFooterSummaryText;
property GroupSummaryText[RowIndex: Integer]: string read GetGroupSummaryText;
property GroupSummaryDisplayValues[RowIndex, Level, Index: Integer]: Variant read GetGroupSummaryDisplayValue write SetGroupSummaryDisplayValue;
// summary group values
property GroupSummaryValues[DataGroupIndex: TcxDataGroupIndex; Index: Integer]: Variant read GetGroupSummaryValue write SetGroupSummaryValue;
published
property DefaultGroupSummaryItems: TcxDataGroupSummaryItems read FDefaultGroupSummaryItems write SetDefaultGroupSummaryItems;
property FooterSummaryItems: TcxDataFooterSummaryItems read FFooterSummaryItems write SetFooterSummaryItems;
property SummaryGroups: TcxDataSummaryGroups read FSummaryGroups write SetSummaryGroups;
property Options: TcxSummaryOptions read GetOptions write SetOptions default [];
property OnAfterSummary: TcxAfterSummaryEvent read FOnAfterSummary write FOnAfterSummary;
end;
TcxDataSummaryClass = class of TcxDataSummary;
{ Incremental Search }
TcxDataControllerSearch = class
private
FDataController: TcxCustomDataController;
FLocked: Boolean;
function GetItemIndex: Integer;
function GetSearching: Boolean;
function GetSearchText: string;
procedure SetItemIndex(const Value: Integer);
protected
procedure DoFocusedRecord(AFilteredRecordIndex: Integer); virtual;
function DoSearch(AStartFilteredRecordIndex, AEndFilteredRecordIndex: Integer;
const ASubText: string; AForward: Boolean): Integer; virtual;
public
constructor Create(ADataController: TcxCustomDataController); virtual;
procedure Cancel;
function Locate(AItemIndex: Integer; const ASubText: string): Boolean; virtual;
function LocateNext(AForward: Boolean): Boolean; virtual;
procedure Lock; virtual;
procedure Unlock; virtual;
property DataController: TcxCustomDataController read FDataController;
property ItemIndex: Integer read GetItemIndex write SetItemIndex;
property Locked: Boolean read FLocked;
property Searching: Boolean read GetSearching;
property SearchText: string read GetSearchText;
end;
TcxDataControllerSearchClass = class of TcxDataControllerSearch;
{ TcxCustomDataController }
// Changing Notification
TcxDataControllerChange = (dccLayout, dccData, dccFocus, dccSelection,
dccDetail, dccSummary, dccSearch, dccSorting, dccGrouping, dccSyncMasterPos,
dccBookmark, dccUpdateRecord);
TcxDataControllerChanges = set of TcxDataControllerChange;
TcxUpdateControlInfo = class
end;
TcxUpdateControlInfoClass = class of TcxUpdateControlInfo;
TcxFocusedRecordChangedInfo = class(TcxUpdateControlInfo)
private
FFocusedRecordIndex: Integer;
FPrevFocusedRecordIndex: Integer;
FFocusedRowIndex: Integer;
FPrevFocusedRowIndex: Integer;
FNewItemRowFocusingChanged: Boolean;
public
constructor Create(APrevFocusedRecordIndex, AFocusedRecordIndex, APrevFocusedRowIndex, AFocusedRowIndex: Integer;
ANewItemRowFocusingChanged: Boolean);
property FocusedRecordIndex: Integer read FFocusedRecordIndex;
property PrevFocusedRecordIndex: Integer read FPrevFocusedRecordIndex;
property FocusedRowIndex: Integer read FFocusedRowIndex;
property PrevFocusedRowIndex: Integer read FPrevFocusedRowIndex;
property NewItemRowFocusingChanged: Boolean read FNewItemRowFocusingChanged;
end;
TcxFocusedRowChangedInfo = class(TcxUpdateControlInfo)
private
FFocusedRowIndex: Integer;
FPrevFocusedRowIndex: Integer;
public
constructor Create(APrevFocusedRowIndex, AFocusedRowIndex: Integer);
property FocusedRowIndex: Integer read FFocusedRowIndex;
property PrevFocusedRowIndex: Integer read FPrevFocusedRowIndex;
end;
TcxGroupingChangingInfo = class(TcxUpdateControlInfo);
TcxLayoutChangedInfo = class(TcxUpdateControlInfo)
{ RowCount has not been changed }
end;
TcxUpdateRecordInfo = class(TcxUpdateControlInfo) { Record is changed }
private
FRecordIndex: Integer;
public
constructor Create(ARecordIndex: Integer);
property RecordIndex: Integer read FRecordIndex;
end;
TcxDataChangedInfo = class(TcxUpdateControlInfo)
{ RowCount has been changed; Grouping/Expanding changed }
Kind: TcxDataChange;
ItemIndex: Integer; // Kind = dcField
RecordIndex: Integer; // Kind = dcRecord
end;
TcxBookmarkChangedInfo = class(TcxUpdateControlInfo)
end;
TcxSelectionChangedInfo = class(TcxUpdateControlInfo)
private
FRowIndexes: TList;
function GetCount: Integer;
function GetRowIndex(Index: Integer): Integer;
public
constructor Create;
constructor CreateEx(ARowIndex1, ARowIndex2: Integer);
destructor Destroy; override;
property Count: Integer read GetCount;
property RowIndexes[Index: Integer]: Integer read GetRowIndex;
end;
TcxSearchChangedInfo = class(TcxUpdateControlInfo)
end;
TcxDataSelectionChangedInfo = record
SelectedCount: Integer;
RowIndex: Integer;
end;
TcxUpdateControlEvent = procedure(AInfo: TcxUpdateControlInfo) of object;
TcxDataControllerLocateObject = class
private
FDataController: TcxCustomDataController;
FInternalRecordIndex: Integer;
protected
property DataController: TcxCustomDataController read FDataController;
property InternalRecordIndex: Integer read FInternalRecordIndex;
public
constructor Create(ADataController: TcxCustomDataController); virtual;
destructor Destroy; override;
procedure Clear; virtual;
function FindRecordIndex: Integer; virtual; abstract;
procedure ReadData(AValueDefReader: TcxValueDefReader);
end;
TcxDataControllerKeyLocateObject = class(TcxDataControllerLocateObject)
private
FFields: TList;
public
constructor Create(ADataController: TcxCustomDataController); override;
destructor Destroy; override;
procedure AddField(AField: TcxCustomDataField);
procedure ClearFields;
function FindRecordIndex: Integer; override;
property FieldList: TList read FFields;
end;
TcxDataControllerGroupLocateObject = class(TcxDataControllerLocateObject)
private
FFields: TList;
FFindFields: TList;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?