cxcustomdata.pas
来自「胜天进销存源码,国产优秀的进销存」· PAS 代码 · 共 1,436 行 · 第 1/5 页
PAS
1,436 行
Expanded: Boolean;
Level: Integer;
RecordIndex: Integer;
end;
TcxDataFocusingInfo = class
private
FChangedFlag: Boolean;
FDataControllerInfo: TcxCustomDataControllerInfo;
FLevel: Integer;
FPrevNewItemRowFocused: Boolean;
FPrevRecordIndex: Integer;
FRecordIndex: Integer;
FRowIndex: Integer;
protected
procedure Assign(AFocusingInfo: TcxDataFocusingInfo);
procedure Clear;
function IsEqual(AFocusingInfo: TcxDataFocusingInfo): Boolean;
procedure ResetPos;
procedure SavePos;
property Level: Integer read FLevel write FLevel;
property RecordIndex: Integer read FRecordIndex write FRecordIndex;
property RowIndex: Integer read FRowIndex write FRowIndex;
public
constructor Create(ADataControllerInfo: TcxCustomDataControllerInfo);
end;
TcxDataExpandingInfoState = (eisExpanded, eisSelected);
TcxDataExpandingInfoStateSet = set of TcxDataExpandingInfoState;
TcxDataExpandingInfo = record
Level: Integer;
Value: Variant;
State: TcxDataExpandingInfoStateSet;
end;
PcxDataExpandingInfo = ^TcxDataExpandingInfo;
TcxDataExpandingInfos = class
private
FFields: TList;
FItems: TList;
FSaveStates: TcxDataExpandingInfoStateSet;
function Find(AField: TcxCustomDataField): Integer;
function GetCount: Integer;
function GetEmpty: Boolean;
function GetField(Index: Integer): TcxCustomDataField;
function GetFieldCount: Integer;
function GetItem(Index: Integer): PcxDataExpandingInfo;
protected
procedure AddField(AField: TcxCustomDataField);
procedure AddItem(ALevel: Integer; const AValue: Variant; AState: TcxDataExpandingInfoStateSet);
procedure CheckField(AField: TcxCustomDataField);
procedure Clear;
procedure ClearFields;
procedure ClearValues;
public
constructor Create;
destructor Destroy; override;
property Count: Integer read GetCount;
property Empty: Boolean read GetEmpty;
property FieldCount: Integer read GetFieldCount;
property Fields[Index: Integer]: TcxCustomDataField read GetField;
property Items[Index: Integer]: PcxDataExpandingInfo read GetItem; default;
property SaveStates: TcxDataExpandingInfoStateSet read FSaveStates write FSaveStates;
end;
TcxDataSelectionInfo = record
Level: Integer;
RecordIndex: Integer; // if Level = -1 then RecordIndex is GroupIndex (in DataGroups)
RowIndex: Integer;
end;
PcxDataSelectionInfo = ^TcxDataSelectionInfo;
TcxDataSelection = class
private
FAnchorRowIndex: Integer;
FDataController: TcxCustomDataController;
FItems: TList;
FFields: TList;
FOnChanged: TcxNoParamsEvent;
function GetCount: Integer;
function GetField(Index: Integer): TcxCustomDataField;
function GetFieldCount: Integer;
function GetItem(Index: Integer): PcxDataSelectionInfo;
protected
procedure Changed;
procedure CheckAfterFiltering;
procedure ClearAnchor; virtual;
procedure InternalAdd(AIndex, ARowIndex, ARecordIndex, ALevel: Integer); virtual;
procedure InternalClear; virtual;
procedure InternalDelete(AIndex: Integer); virtual;
procedure SetInternalCount(ACount: Integer); virtual;
public
constructor Create(ADataController: TcxCustomDataController); virtual;
destructor Destroy; override;
procedure Add(AIndex, ARowIndex, ARecordIndex, ALevel: Integer); virtual;
procedure AddField(AField: TcxCustomDataField);
procedure Clear;
procedure ClearAll;
procedure ClearFields;
procedure Delete(AIndex: Integer);
function FindByGroupIndex(AGroupIndex: Integer): Integer;
function FindByRecordIndex(ARecordIndex: Integer): Integer;
function FindByRowIndex(ARowIndex: Integer; var AIndex: Integer): Boolean; virtual;
function IsRecordSelected(ARecordIndex: Integer): Boolean;
function IsRowSelected(ARowIndex: Integer): Boolean;
procedure Sort;
property Count: Integer read GetCount;
property DataController: TcxCustomDataController read FDataController;
property FieldCount: Integer read GetFieldCount;
property Fields[Index: Integer]: TcxCustomDataField read GetField;
property Items[Index: Integer]: PcxDataSelectionInfo read GetItem; default;
property AnchorRowIndex: Integer read FAnchorRowIndex;
property OnChanged: TcxNoParamsEvent read FOnChanged write FOnChanged;
end;
TcxDataSelectionClass = class of TcxDataSelection;
TcxCustomDataControllerInfo = class
private
FChanges: TcxDataControllerInfoChanges;
FDataController: TcxCustomDataController;
FDataGroups: TcxDataGroups;
FExpandingInfo: TcxDataExpandingInfos;
FExpandingFlag: Boolean;
FFocusingFlag: Boolean;
FFocusingInfo: TcxDataFocusingInfo;
FGroupingFieldList: TcxGroupingFieldList;
FInCanFocusedRowChanging: Boolean;
FInfoCalculation: Boolean;
FLockCount: Integer;
FPrevFocusingInfo: TcxDataFocusingInfo;
FRecordList: TList;
FSelection: TcxDataSelection;
FSortingFieldList: TcxSortingFieldList;
FTotalSortingFieldList: TcxSortingFieldList;
procedure CheckAfterCollapsing;
procedure CheckExpanding;
procedure CheckFocusing;
procedure CheckFocusingAfterFilter;
procedure CheckInfo;
procedure ClearInfo;
function CompareRecords(ARecord1, ARecord2: Pointer): Integer;
function GetFocusedRecordIndex: Integer;
function GetFocusedRowIndex: Integer;
function GetNewItemRowFocusingChanged: Boolean;
function GetPrevFocusedRecordIndex: Integer;
function GetPrevFocusedRowIndex: Integer;
procedure SaveInfo;
procedure SetFocusedRowIndex(Value: Integer);
protected
function CanFocusedRowChanging(ARowIndex: Integer): Boolean;
procedure CorrectFocusedRow(ARowIndex: Integer);
procedure DoChangeFocusedRow(AValue: Integer; AIsInternal: Boolean);
procedure DoFilter;
procedure DoGrouping;
procedure DoLoad;
procedure DoSort;
procedure DoBeginSummary;
procedure DoEndSummary;
function FindDataGroup(ARecordListIndex: Integer): Integer;
function FindFocusedRow(ANearest: Boolean): Integer;
procedure ForwardChanges;
function GetInternalRecordCount: Integer;
function GetInternalRecordListIndex(ARecordIndex: Integer): Integer;
function IsAlwaysExpanded: Boolean;
function IsGrouped: Boolean;
function IsSummaryForSelectedRecords: Boolean;
function LocateGroupByLevel(AGroupIndex, ALevel: Integer): Integer;
function LocateDetail(AGroupIndex, ARecordListIndex: Integer; AMakeVisible: Boolean): Integer;
procedure PrepareSorting;
procedure RecalcSelection;
procedure ResetFocusing;
procedure SaveExpanding(ASaveStates: TcxDataExpandingInfoStateSet);
procedure TruncateSelection; virtual;
procedure UnprepareSorting;
procedure Update; virtual;
// Sorting By Summary
procedure DoSortBySummary;
function IsSortingBySummary: Boolean;
property SortingFieldList: TcxSortingFieldList read FSortingFieldList;
property TotalSortingFieldList: TcxSortingFieldList read FTotalSortingFieldList;
public
constructor Create(ADataController: TcxCustomDataController); virtual;
destructor Destroy; override;
procedure BeginUpdate;
procedure EndUpdate;
procedure CheckChanges;
procedure CheckRowIndex(ARowIndex: Integer);
function GetInternalRecordIndex(ARecordListIndex: Integer): Integer;
procedure Refresh;
procedure RefreshFocused;
procedure RefreshSummary(ARedrawOnly: Boolean);
// Notify
procedure ExpandingChanged;
procedure FocusedRecordChanged(AChangedFlag: Boolean);
procedure GroupingChanged;
procedure SelectionChanged;
procedure SortingChanged;
// Structure
procedure RemoveField(AField: TcxCustomDataField);
procedure UpdateField(AField: TcxCustomDataField);
// Sorting
procedure ChangeSortIndex(AField: TcxCustomDataField; ASortIndex: Integer);
procedure ChangeSorting(AField: TcxCustomDataField; ASortOrder: TcxDataSortOrder);
procedure ClearSorting(AKeepGroupedItems: Boolean);
// Grouping
procedure ChangeExpanding(ARowIndex: Integer; AExpanded, ARecursive: Boolean);
procedure ChangeGrouping(AField: TcxCustomDataField; AGroupIndex: Integer);
procedure ClearGrouping;
function CompareGroupRecords(ARecordIndex1, ARecordIndex2, AIndex: Integer): Integer;
procedure FullCollapse;
procedure FullExpand;
property DataGroups: TcxDataGroups read FDataGroups;
property GroupingFieldList: TcxGroupingFieldList read FGroupingFieldList;
// View Data
function GetNearestRowIndex(ARowIndex: Integer): Integer;
function GetRowCount: Integer;
function GetRowIndexByRecordIndex(ARecordIndex: Integer; AMakeVisible: Boolean): Integer;
function GetRowInfo(ARowIndex: Integer): TcxRowInfo;
// Selection
procedure ChangeRowSelection(ARowIndex: Integer; ASelection: Boolean);
procedure ClearSelection;
procedure ClearSelectionAnchor;
function GetSelectedCount: Integer;
function GetSelectedRowIndex(Index: Integer): Integer;
function IsRowSelected(ARowIndex: Integer): Boolean;
property Selection: TcxDataSelection read FSelection;
// Navigation
property FocusedRecordIndex: Integer read GetFocusedRecordIndex;
property FocusedRowIndex: Integer read GetFocusedRowIndex write SetFocusedRowIndex;
property NewItemRowFocusingChanged: Boolean read GetNewItemRowFocusingChanged;
property PrevFocusedRecordIndex: Integer read GetPrevFocusedRecordIndex;
property PrevFocusedRowIndex: Integer read GetPrevFocusedRowIndex;
property DataController: TcxCustomDataController read FDataController;
property LockCount: Integer read FLockCount;
end;
{ Filter }
TcxDataFilterCriteriaItem = class(TcxFilterCriteriaItem)
private
function GetDataController: TcxCustomDataController;
function GetField: TcxCustomDataField;
protected
function GetDataValue(AData: TObject): Variant; override;
function GetFieldCaption: string; override;
function GetFieldName: string; override;
function GetItemLink: TObject; override;
procedure SetItemLink(Value: TObject); override;
public
property DataController: TcxCustomDataController read GetDataController;
property Field: TcxCustomDataField read GetField;
end;
TcxDataFilterValueList = class(TcxFilterValueList)
private
function GetDataController: TcxCustomDataController;
public
procedure Load(AItemIndex: Integer; AInitSortByDisplayText: Boolean = True;
AUseFilteredValues: Boolean = False); virtual;
property DataController: TcxCustomDataController read GetDataController;
end;
TcxDataFilterGetValueListEvent = procedure(Sender: TcxFilterCriteria;
AItemIndex: Integer; AValueList: TcxDataFilterValueList) of object;
TcxDataFilterCriteria = class(TcxFilterCriteria)
private
FActive: Boolean;
FDataController: TcxCustomDataController;
FDestroying: Boolean;
FOnGetValueList: TcxDataFilterGetValueListEvent;
procedure SetActive(Value: Boolean);
protected
procedure DefineProperties(Filer: TFiler); override;
function DoFilterRecord(ARecordIndex: Integer): Boolean;
function GetIDByItemLink(AItemLink: TObject): Integer; override;
function GetNameByItemLink(AItemLink: TObject): string; override;
function GetItemClass: TcxFilterCriteriaItemClass; override;
function GetItemLinkByID(AID: Integer): TObject; override;
function GetItemLinkByName(const AName: string): TObject; override;
function GetValueListClass: TcxFilterValueListClass; override;
function IsDestroying: Boolean;
function IsInternal: Boolean;
function IsLoading: Boolean;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?