cxgridbandedtableview.pas

来自「胜天进销存源码,国产优秀的进销存」· PAS 代码 · 共 1,455 行 · 第 1/5 页

PAS
1,455
字号
    property BandViewInfo: TcxGridBandViewInfo read GetBandViewInfo;
    property ColumnViewInfoCount: Integer read GetColumnViewInfoCount;
    property ColumnViewInfos[Index: Integer]: TcxGridBandedColumnHeaderViewInfo read GetColumnViewInfo; default;
    property Index: Integer read FIndex;
    property MinWidth: Integer read GetMinWidth;
    property RowsViewInfo: TcxGridBandRowsViewInfo read FRowsViewInfo;
    property Height: Integer read GetHeight;
    property Width: Integer read GetWidth;
  end;

  TcxGridBandRowsViewInfoClass = class of TcxGridBandRowsViewInfo;

  TcxGridBandRowsViewInfo = class
  private
    FBandViewInfo: TcxGridBandViewInfo;
    FItems: TList;
    FWidth: Integer;
    function GetBandRows: TcxGridBandRows;
    function GetCount: Integer;
    function GetItem(Index: Integer): TcxGridBandRowViewInfo;
    function GetMinWidth: Integer;
    function GetWidth: Integer;
    procedure CreateItems;
    procedure DestroyItems;
  protected
    procedure AssignColumnWidths;
    procedure Calculate(const ABounds: TRect); virtual;
    procedure CalculateColumnWidths; virtual;
    function CalculateWidth: Integer; virtual;
    function GetBandRowViewInfoClass: TcxGridBandRowViewInfoClass; virtual;
  public
    Bounds: TRect;
    constructor Create(ABandViewInfo: TcxGridBandViewInfo); virtual;
    destructor Destroy; override;
    //function GetColumnsHitTest(const P: TPoint): TcxCustomGridHitTest; virtual;
    function IndexAtPos(const P: TPoint): Integer;
    procedure Offset(DX, DY: Integer); virtual;
    property BandRows: TcxGridBandRows read GetBandRows;
    property BandViewInfo: TcxGridBandViewInfo read FBandViewInfo;
    property Count: Integer read GetCount;
    property Items[Index: Integer]: TcxGridBandRowViewInfo read GetItem; default;
    property MinWidth: Integer read GetMinWidth;
    property Width: Integer read GetWidth;
  end;

  TcxGridBandViewInfoClass = class of TcxGridBandViewInfo;

  TcxGridBandViewInfo = class(TcxCustomGridCellViewInfo)
  private
    FBandsViewInfo: TcxGridBandsViewInfo;
    FBottomIndex: Integer;
    FColumnViewInfos: TList;
    FHeaderViewInfo: TcxGridBandHeaderViewInfo;
    FIndex: Integer;
    FRowsViewInfo: TcxGridBandRowsViewInfo;
    FWidth: Integer;
    function GetBand: TcxGridBand;
    function GetBoundsForBandInsert: TRect;
    function GetChildBandViewInfo(Index: Integer): TcxGridBandViewInfo;
    function GetChildBandViewInfoCount: Integer;
    function GetColumnViewInfo(Index: Integer): TcxGridBandedColumnHeaderViewInfo;
    function GetColumnViewInfoCount: Integer;
    function GetContainerViewInfo: TcxGridBandedHeaderViewInfo;
    function GetFixedKind: TcxGridBandFixedKind;
    function GetGridView: TcxGridBandedTableView;
    function GetGridViewInfo: TcxGridBandedTableViewInfo;
    function GetIsBottom: Boolean;
    function GetIsFixed: Boolean;
    function GetIsRight: Boolean;
    function GetIsRoot: Boolean;
    function GetParentBandViewInfo: TcxGridBandViewInfo;
    function GetRowCount: Integer;
    function GetSameLevelAutoWidth: Integer;
    function GetSameLevelItem(Index: Integer): TcxGridBandViewInfo;
    function GetSameLevelItemCount: Integer;
  protected
    procedure AddColumnViewInfos; virtual;
    procedure AssignChildBandWidths;
    procedure AssignColumnWidths;
    procedure CalculateChildBandWidths; virtual;
    procedure CalculateChildBands(R: TRect); virtual;
    function CalculateChildBandsBounds: TRect; virtual;
    function CalculateColumnsBounds: TRect; virtual;
    procedure CalculateColumnWidths; virtual;
    function CalculateHeaderBounds: TRect; virtual;
    //function CalculateHeaderHeightWithChildren: Integer;
    function CalculateHeight: Integer; override;
    function CalculateWidth: Integer; override;
    function CanSize: Boolean; virtual;
    procedure CheckWidth(var Value: Integer); virtual;
    function CustomDrawBackground(ACanvas: TcxCanvas): Boolean; override;
    function GetAreAllColumnsFixed: Boolean; virtual;
    function GetBackgroundBitmap: TBitmap; override;
    function GetBorderColor(AIndex: TcxBorder): TColor; override;
    function GetBorders: TcxBorders; override;
    function GetBorderWidth(AIndex: TcxBorder): Integer; override;
    function GetCanvas: TcxCanvas; override;
    function GetContentWidth: Integer; override;
    class function GetHeaderViewInfoClass: TcxGridBandHeaderViewInfoClass; virtual;
    function GetHitTestClass: TcxCustomGridHitTestClass; override;
    function GetMaxContentWidth: Integer; virtual;
    function GetMaxWidth: Integer; virtual;
    function GetMinContentWidth: Integer; virtual;
    function GetMinWidth: Integer; virtual;
    function GetPainterClass: TcxCustomGridCellPainterClass; override;
    function GetRowsViewInfoClass: TcxGridBandRowsViewInfoClass; virtual;
    procedure GetViewParams(var AParams: TcxViewParams); override;
    function GetWidth: Integer; override;
    procedure InitHitTest(AHitTest: TcxCustomGridHitTest); override;
    procedure Offset(DX, DY: Integer); override;
    procedure SetWidth(Value: Integer); override;
    property BoundsForBandInsert: TRect read GetBoundsForBandInsert;
  public
    constructor Create(ABandsViewInfo: TcxGridBandsViewInfo; AIndex: Integer); virtual;
    destructor Destroy; override;
    procedure Calculate(const ABounds: TRect); override;
    function GetHitTest(const P: TPoint): TcxCustomGridHitTest; override;
    procedure InitAutoWidthItem(AAutoWidthItem: TcxAutoWidthItem);
    function InsertPositionAtPos(const P: TPoint; out ABand: TcxGridBand;
      out AInsertPosition: TcxPosition): Boolean;

    property AreAllColumnsFixed: Boolean read GetAreAllColumnsFixed;
    property Band: TcxGridBand read GetBand;
    property BandsViewInfo: TcxGridBandsViewInfo read FBandsViewInfo;
    property BottomIndex: Integer read FBottomIndex;
    property ChildBandViewInfoCount: Integer read GetChildBandViewInfoCount;
    property ChildBandViewInfos[Index: Integer]: TcxGridBandViewInfo read GetChildBandViewInfo;
    property ColumnViewInfoCount: Integer read GetColumnViewInfoCount;
    property ColumnViewInfos[Index: Integer]: TcxGridBandedColumnHeaderViewInfo read GetColumnViewInfo; default;
    property ContainerViewInfo: TcxGridBandedHeaderViewInfo read GetContainerViewInfo;
    property FixedKind: TcxGridBandFixedKind read GetFixedKind;
    property GridView: TcxGridBandedTableView read GetGridView;
    property GridViewInfo: TcxGridBandedTableViewInfo read GetGridViewInfo;
    property HeaderViewInfo: TcxGridBandHeaderViewInfo read FHeaderViewInfo;
    property Index: Integer read FIndex;
    property IsBottom: Boolean read GetIsBottom;
    property IsFixed: Boolean read GetIsFixed;
    property IsRight: Boolean read GetIsRight;
    property IsRoot: Boolean read GetIsRoot;
    property MaxContentWidth: Integer read GetMaxContentWidth;
    property MaxWidth: Integer read GetMaxWidth;
    property MinContentWidth: Integer read GetMinContentWidth;
    property MinWidth: Integer read GetMinWidth;
    property ParentBandViewInfo: TcxGridBandViewInfo read GetParentBandViewInfo;
    property RowCount: Integer read GetRowCount;
    property RowsViewInfo: TcxGridBandRowsViewInfo read FRowsViewInfo;
    property SameLevelItemCount: Integer read GetSameLevelItemCount;
    property SameLevelItems[Index: Integer]: TcxGridBandViewInfo read GetSameLevelItem;
    property SameLevelAutoWidth: Integer read GetSameLevelAutoWidth;
  end;

  TcxGridBandsViewInfoClass = class of TcxGridBandsViewInfo;

  TcxGridBandsViewInfo = class
  private
    FContainerViewInfo: TcxGridBandedHeaderViewInfo;
    FBandHeaderRowHeights: TList;
    FBandHeadersAreaHeight: Integer;
    FItems: TList;
    FLineCount: Integer;
    FRowCount: Integer;
    function GetBandHeaderRowCount: Integer;
    function GetBandHeaderRowHeight(Index: Integer): Integer;
    function GetBandHeadersAreaHeight: Integer;
    function GetBands: TcxGridBands;
    function GetBottomItem(Index: Integer): TcxGridBandViewInfo;
    function GetBottomItemCount: Integer;
    function GetColumnHeadersAreaHeight: Integer;
    function GetCount: Integer;
    function GetGridView: TcxGridBandedTableView;
    function GetGridViewInfo: TcxGridBandedTableViewInfo;
    function GetInternalItem(Index: Integer): TcxGridBandViewInfo;
    function GetItem(Index: Integer): TcxGridBandViewInfo;
    function GetLastFixedItem(AFixedKind: TcxGridBandFixedKind; ALevelIndex: Integer): TcxGridBandViewInfo;
    function GetLineCount: Integer;
    function GetRootItem(Index: Integer): TcxGridBandViewInfo;
    function GetRootItemCount: Integer;
    function GetRowCount: Integer;
    procedure SetBandHeaderRowHeight(Index: Integer; Value: Integer);
    procedure CreateItems;
    procedure DestroyItems;
  protected
    function AddIndicatorItems(AIndicatorViewInfo: TcxGridIndicatorViewInfo; ATopBound: Integer): Boolean; virtual;
    procedure Calculate; virtual;
    function CalculateBandHeaderHeight(ABandHeaderViewInfo: TcxGridBandHeaderViewInfo): Integer; virtual;
    procedure CalculateBandHeaderRowHeights; virtual;
    function CalculateBandHeadersAreaHeight: Integer; virtual;
    procedure CalculateColumnWidths; virtual;
    function CalculateHeight: Integer; virtual;
    function CalculateWidth: Integer; virtual;
    function DrawBandHeaderBackgroundHandler(ACanvas: TcxCanvas; const ABounds: TRect): Boolean; virtual;
    function GetBandBackgroundBitmap: TBitmap; virtual;
    function GetBandHeaderBackgroundBitmap: TBitmap; virtual;
    function GetItemClass: TcxGridBandViewInfoClass; virtual;
    function IsBandHeaderHeightAssigned: Boolean; virtual;
    function ShowBandHeaders: Boolean; virtual;
    function ShowColumnHeaders: Boolean; virtual;

    property BandHeadersAreaHeight: Integer read GetBandHeadersAreaHeight;
    property ColumnHeadersAreaHeight: Integer read GetColumnHeadersAreaHeight;
    property GridViewInfo: TcxGridBandedTableViewInfo read GetGridViewInfo;
    property InternalItems[Index: Integer]: TcxGridBandViewInfo read GetInternalItem;
  public
    constructor Create(AContainerViewInfo: TcxGridBandedHeaderViewInfo); virtual;
    destructor Destroy; override;
    procedure AssignRootItemWidths;
    //function GetColumnsHitTest(const P: TPoint): TcxCustomGridHitTest; virtual;
    function GetHitTest(const P: TPoint): TcxCustomGridHitTest; virtual;
    function GetItemAreaBounds(ABand: TcxGridBand): TRect; virtual;
    procedure InsertPositionAtPos(const P: TPoint; out ABand: TcxGridBand;
      out AInsertPosition: TcxPosition);
    procedure Offset(DX, DY: Integer); virtual;
    property BandBackgroundBitmap: TBitmap read GetBandBackgroundBitmap;
    property BandHeaderBackgroundBitmap: TBitmap read GetBandHeaderBackgroundBitmap;
    property BandHeaderRowCount: Integer read GetBandHeaderRowCount;
    property BandHeaderRowHeights[Index: Integer]: Integer read GetBandHeaderRowHeight write SetBandHeaderRowHeight;
    property Bands: TcxGridBands read GetBands;
    property BottomItemCount: Integer read GetBottomItemCount;
    property BottomItems[Index: Integer]: TcxGridBandViewInfo read GetBottomItem;
    property ContainerViewInfo: TcxGridBandedHeaderViewInfo read FContainerViewInfo;
    property Count: Integer read GetCount;
    property GridView: TcxGridBandedTableView read GetGridView;
    property Items[Index: Integer]: TcxGridBandViewInfo read GetItem; default;
    property LastFixedItems[AFixedKind: TcxGridBandFixedKind; ALevelIndex: Integer]: TcxGridBandViewInfo read GetLastFixedItem;
    property LineCount: Integer read GetLineCount;
    property RootItemCount: Integer read GetRootItemCount;
    property RootItems[Index: Integer]: TcxGridBandViewInfo read GetRootItem;
    property RowCount: Integer read GetRowCount;
  end;

  // header

  TcxGridBandedHeaderViewInfoSpecific = class(TcxGridHeaderViewInfoSpecific)
  private
    function GetGridViewInfo: TcxGridBandedTableViewInfo;
  protected
    function CalculateHeight: Integer; override;
  public
    property GridViewInfo: TcxGridBandedTableViewInfo read GetGridViewInfo;
  end;

  TcxGridBandedHeaderViewInfo = class(TcxGridHeaderViewInfo)
  private
    FBandsViewInfo: TcxGridBandsViewInfo;
    function GetGridView: TcxGridBandedTableView;
    function GetGridViewInfo: TcxGridBandedTableViewInfo;
    function GetItem(Index: Integer): TcxGridBandedColumnHeaderViewInfo;
    function GetLineCount: Integer;
    function GetRowCount: Integer;
    function GetSpecific: TcxGridBandedHeaderViewInfoSpecific;
  protected
    procedure AddIndicatorItems(AIndicatorViewInfo: TcxGridIndicatorViewInfo; ATopBound: Integer); override;
    procedure CalculateColumnAutoWidths; override;
    procedure CalculateColumnWidths; override;
    function CalculateHeight: Integer; override;
    procedure CalculateItems; override;
    function GetBandsViewInfoClass: TcxGridBandsViewInfoClass; virtual;
    function GetColumnNeighbors(AColumn: TcxGridColumn): TcxNeighbors; override;
    function GetIsScrollable: Boolean; override;
    function GetItemAreaBounds(AItem: TcxGridColumnHeaderViewInfo): TRect; override;
    function GetItemClass: TcxGridColumnHeaderViewInfoClass; override;
    function GetItemMultiLinePainting(AItem: TcxGridColumnHeaderViewInfo): Boolean; override;
    function GetItemsAreaBounds: TRect; override;
    function GetItemsHitTest(const P: TPoint): TcxCustomGridHitTest; override;
    function GetPainterClass: TcxCustomGridCellPainterClass; override;
    function GetVisible: Boolean; override;
    function GetWidth: Integer; override;
    function IsHeightAssigned: Boolean; override;
    procedure Offset(DX, DY: Integer); override;
  public
    constructor Create(AGridViewInfo: TcxCustomGridTableViewInfo); override;
    destructor Destroy; override;
    function GetHitTest(const P: TPoint): TcxCustomGridHitTest; override;
    function GetZone(const P: TPoint): TcxGridItemContainerZone; override;
    property BandsViewInfo: TcxGridBandsViewInfo read FBandsViewInfo;
    property GridView: TcxGridBandedTableView read GetGridView;
    property GridViewInfo: TcxGridBandedTableViewInfo read GetGridViewInfo;
    property Items[Index: Integer]: TcxGridBandedColumnHeaderViewInfo read GetItem; default;
    property LineCount: Integer read GetLineCount;
    property RowCount: Integer read GetRowCount;
    property Specific: TcxGridBandedHeaderViewInfoSpecific read GetSpecific;
  end;

  // footer

  TcxGridBandedFooterViewInfo = class(TcxGridFooterViewInfo)
  protected
    function GetItemMultiLinePainting(AItem: TcxGridColumnHeaderViewInfo): Boolean; override;
    procedure PrepareSummaryItems(ASummaryItems: TList); override;
  end;

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?