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