cxgridrows.pas
来自「胜天进销存源码,国产优秀的进销存」· PAS 代码 · 共 1,895 行 · 第 1/5 页
PAS
1,895 行
{********************************************************************}
{ }
{ Developer Express Visual Component Library }
{ ExpressQuantumGrid }
{ }
{ Copyright (c) 1998-2008 Developer Express Inc. }
{ ALL RIGHTS RESERVED }
{ }
{ The entire contents of this file is protected by U.S. and }
{ International Copyright Laws. Unauthorized reproduction, }
{ reverse-engineering, and distribution of all or any portion of }
{ the code contained in this file is strictly prohibited and may }
{ result in severe civil and criminal penalties and will be }
{ prosecuted to the maximum extent possible under the law. }
{ }
{ RESTRICTIONS }
{ }
{ THIS SOURCE CODE AND ALL RESULTING INTERMEDIATE FILES }
{ (DCU, OBJ, DLL, ETC.) ARE CONFIDENTIAL AND PROPRIETARY TRADE }
{ SECRETS OF DEVELOPER EXPRESS INC. THE REGISTERED DEVELOPER IS }
{ LICENSED TO DISTRIBUTE THE EXPRESSQUANTUMGRID AND ALL }
{ ACCOMPANYING VCL CONTROLS AS PART OF AN EXECUTABLE PROGRAM ONLY. }
{ }
{ THE SOURCE CODE CONTAINED WITHIN THIS FILE AND ALL RELATED }
{ FILES OR ANY PORTION OF ITS CONTENTS SHALL AT NO TIME BE }
{ COPIED, TRANSFERRED, SOLD, DISTRIBUTED, OR OTHERWISE MADE }
{ AVAILABLE TO OTHER INDIVIDUALS WITHOUT EXPRESS WRITTEN CONSENT }
{ AND PERMISSION FROM DEVELOPER EXPRESS INC. }
{ }
{ CONSULT THE END USER LICENSE AGREEMENT FOR INFORMATION ON }
{ ADDITIONAL RESTRICTIONS. }
{ }
{********************************************************************}
unit cxGridRows;
{$I cxVer.inc}
{$I cxGridVer.inc}
interface
uses
Windows, Classes, Graphics, Controls,
cxClasses, cxControls, cxGraphics, cxLookAndFeels, cxLookAndFeelPainters, cxCustomData, cxPC,
cxGridCommon, cxGridLevel, cxGridCustomView,
cxGridCustomTableView, cxGridTableView,
cxGridDetailsSite;
const
htPreview = htGridBase + 31;
type
TcxGridDataCellViewInfoClass = class of TcxGridDataCellViewInfo;
TcxGridDataCellViewInfo = class;
TcxGridDataRowCellsAreaViewInfo = class;
TcxGridDataRowViewInfo = class;
TcxGridNewItemRowViewInfo = class;
TcxGridGroupCellViewInfo = class;
TcxGridGroupSummaryCellViewInfo = class;
TcxGridGroupRowViewInfo = class;
{$IFDEF USETABCONTROL}
TcxGridMasterDataRowDetailsSiteLeftTabsViewInfo = class;
{$ENDIF}
TcxGridDetailsSiteViewInfo = class;
TcxGridExpandButtonCellViewInfo = class;
TcxGridMasterDataRowViewInfo = class;
{ hit tests }
TcxGridPreviewHitTest = class(TcxGridRecordCellHitTest)
protected
class function GetHitTestCode: Integer; override;
end;
{ painters }
TcxGridDataCellPainter = class(TcxGridTableDataCellPainter)
private
function GetViewInfo: TcxGridDataCellViewInfo;
protected
procedure DrawBorder(ABorder: TcxBorder); override;
function ExcludeFromClipRect: Boolean; override;
property ViewInfo: TcxGridDataCellViewInfo read GetViewInfo;
end;
TcxGridDataRowPainter = class(TcxCustomGridRowPainter)
private
function GetViewInfo: TcxGridDataRowViewInfo;
protected
procedure DrawCells; virtual;
function GetShowCells: Boolean; virtual;
procedure Paint; override;
property ShowCells: Boolean read GetShowCells;
property ViewInfo: TcxGridDataRowViewInfo read GetViewInfo;
end;
TcxGridNewItemRowPainter = class(TcxGridDataRowPainter)
private
function GetViewInfo: TcxGridNewItemRowViewInfo;
protected
procedure DrawBackground; override;
procedure DrawSeparator; override;
function GetShowCells: Boolean; override;
procedure Paint; override;
property ViewInfo: TcxGridNewItemRowViewInfo read GetViewInfo;
end;
{$IFDEF USETABCONTROL}
TcxGridMasterDataRowDetailsSiteTabsPainter = class(TcxGridDetailsSiteTabsPainter)
private
function GetViewInfo: TcxGridMasterDataRowDetailsSiteLeftTabsViewInfo;
protected
procedure DrawBottomGridLine; virtual;
procedure Paint; override;
property ViewInfo: TcxGridMasterDataRowDetailsSiteLeftTabsViewInfo read GetViewInfo;
end;
{$ENDIF}
TcxGridExpandButtonCellPainter = class(TcxCustomGridCellPainter)
private
function GetViewInfo: TcxGridExpandButtonCellViewInfo;
protected
procedure DrawBorder(ABorder: TcxBorder); override;
property ViewInfo: TcxGridExpandButtonCellViewInfo read GetViewInfo;
end;
TcxGridMasterDataRowPainter = class(TcxGridDataRowPainter)
private
function GetViewInfo: TcxGridMasterDataRowViewInfo;
protected
procedure DrawCells; override;
procedure DrawDetailsSite; virtual;
//procedure DrawDetailsArea; virtual;
procedure DrawExpandButtonCell; virtual;
function NeedsPainting: Boolean; override;
procedure Paint; override;
property ViewInfo: TcxGridMasterDataRowViewInfo read GetViewInfo;
end;
TcxGridGroupCellPainter = class(TcxCustomGridCellPainter)
private
function GetViewInfo: TcxGridGroupCellViewInfo;
protected
procedure DrawBorder(ABorder: TcxBorder); override;
property ViewInfo: TcxGridGroupCellViewInfo read GetViewInfo;
end;
TcxGridGroupSummaryCellPainter = class(TcxCustomGridCellPainter)
private
function GetViewInfo: TcxGridGroupSummaryCellViewInfo;
protected
procedure Paint; override;
property ViewInfo: TcxGridGroupSummaryCellViewInfo read GetViewInfo;
end;
TcxGridGroupRowPainter = class(TcxCustomGridRowPainter)
private
function GetViewInfo: TcxGridGroupRowViewInfo;
protected
procedure DrawBackground; override;
procedure DrawSeparator; override;
procedure DrawSummaryCells; virtual;
procedure Paint; override;
property ViewInfo: TcxGridGroupRowViewInfo read GetViewInfo;
end;
{ view infos }
TcxGridCellViewInfo = class(TcxGridTableCellViewInfo)
private
function GetGridView: TcxGridTableView;
function GetGridLines: TcxGridLines;
function GetGridRecord: TcxCustomGridRow;
function GetGridViewInfo: TcxGridTableViewInfo;
function GetRecordViewInfo: TcxCustomGridRowViewInfo;
protected
function GetBorderColor(AIndex: TcxBorder): TColor; override;
function GetBorderWidth(AIndex: TcxBorder): Integer; override;
procedure GetViewParams(var AParams: TcxViewParams); override;
property GridLines: TcxGridLines read GetGridLines;
public
property GridRecord: TcxCustomGridRow read GetGridRecord;
property GridView: TcxGridTableView read GetGridView;
property GridViewInfo: TcxGridTableViewInfo read GetGridViewInfo;
property RecordViewInfo: TcxCustomGridRowViewInfo read GetRecordViewInfo;
end;
// data row
TcxGridDataCellViewInfo = class(TcxGridTableDataCellViewInfo)
private
FIsMerged: Boolean;
FIsMerging: Boolean;
FMergedCells: TList;
FMergingCell: TcxGridDataCellViewInfo;
FOriginalHeight: Integer;
function GetCacheItem: TcxGridTableViewInfoCacheItem;
function GetGridView: TcxGridTableView;
function GetGridViewInfo: TcxGridTableViewInfo;
function GetItem: TcxGridColumn;
function GetMergedCell(Index: Integer): TcxGridDataCellViewInfo;
function GetMergedCellCount: Integer;
function GetMergedCellOfFocusedRow: TcxGridDataCellViewInfo;
function GetRecordViewInfo: TcxGridDataRowViewInfo;
protected
OriginalBounds: TRect;
procedure AfterRowsViewInfoCalculate; virtual;
procedure AfterRowsViewInfoOffset; virtual;
function CalculateSelected: Boolean; override;
function CalculateWidth: Integer; override;
function CanBeMergingCell: Boolean; virtual;
function CanCellMerging: Boolean; virtual;
function GetBorderColor(AIndex: TcxBorder): TColor; override;
function GetBorders: TcxBorders; override;
function GetBorderWidth(AIndex: TcxBorder): Integer; override;
function GetFocused: Boolean; override;
function GetMultiLine: Boolean; override;
function GetPainterClass: TcxCustomGridCellPainterClass; override;
function GetVisible: Boolean; override;
function GetVisibleForHitTest: Boolean; override;
function HasHitTestPoint(const P: TPoint): Boolean; override;
procedure Offset(DX, DY: Integer); override;
procedure RemoveMergedCell(ACellViewInfo: TcxGridDataCellViewInfo);
property CacheItem: TcxGridTableViewInfoCacheItem read GetCacheItem;
property MergedCellOfFocusedRow: TcxGridDataCellViewInfo read GetMergedCellOfFocusedRow;
property GridView: TcxGridTableView read GetGridView;
property GridViewInfo: TcxGridTableViewInfo read GetGridViewInfo;
property OriginalHeight: Integer read FOriginalHeight;
public
destructor Destroy; override;
procedure BeforeRecalculation; override;
procedure Calculate(ALeftBound, ATopBound: Integer; AWidth: Integer = -1;
AHeight: Integer = -1); override;
function MouseMove(AHitTest: TcxCustomGridHitTest; AShift: TShiftState): Boolean; override;
procedure Paint(ACanvas: TcxCanvas = nil); override;
property IsMerged: Boolean read FIsMerged;
property IsMerging: Boolean read FIsMerging;
property Item: TcxGridColumn read GetItem;
property MergedCellCount: Integer read GetMergedCellCount;
property MergedCells[Index: Integer]: TcxGridDataCellViewInfo read GetMergedCell;
property MergingCell: TcxGridDataCellViewInfo read FMergingCell;
property RecordViewInfo: TcxGridDataRowViewInfo read GetRecordViewInfo;
end;
TcxGridDataRowCellsAreaViewInfoClass = class of TcxGridDataRowCellsAreaViewInfo;
TcxGridDataRowCellsAreaViewInfo = class(TcxGridCellViewInfo)
private
function GetRecordViewInfo: TcxGridDataRowViewInfo;
protected
function CalculateHeight: Integer; override;
function CalculateVisible: Boolean; virtual;
function CalculateWidth: Integer; override;
function GetBorders: TcxBorders; override;
function GetIsBottom: Boolean; virtual;
public
constructor Create(ARecordViewInfo: TcxCustomGridRecordViewInfo); override;
function CanDrawSelected: Boolean; override;
function DrawMergedCells: Boolean; virtual;
property IsBottom: Boolean read GetIsBottom;
property RecordViewInfo: TcxGridDataRowViewInfo read GetRecordViewInfo;
end;
TcxGridPreviewCellViewInfoClass = class of TcxGridPreviewCellViewInfo;
TcxGridPreviewCellViewInfo = class(TcxGridDataCellViewInfo)
private
function GetPreview: TcxGridPreview;
protected
function CalculateHeight: Integer; override;
function CalculateWidth: Integer; override;
function GetAutoHeight: Boolean; override;
function GetBackgroundBitmap: TBitmap; override;
function GetBorders: TcxBorders; override;
procedure GetEditViewDataContentOffsets(var R: TRect); override;
function GetHeight: Integer; override;
function GetHitTestClass: TcxCustomGridHitTestClass; override;
function GetMaxLineCount: Integer; override;
function GetMultiLine: Boolean; override;
function GetTextAreaBounds: TRect; override;
function SupportsZeroHeight: Boolean; override;
property Preview: TcxGridPreview read GetPreview;
end;
TcxGridDataRowViewInfo = class(TcxCustomGridRowViewInfo)
private
FCellHeight: Integer;
FCellsAreaBounds: TRect;
FCellsAreaViewInfo: TcxGridDataRowCellsAreaViewInfo;
FCellViewInfos: TList;
FPreviewViewInfo: TcxGridPreviewCellViewInfo;
function GetCellViewInfo(Index: Integer): TcxGridDataCellViewInfo;
function GetCellViewInfoCount: Integer;
function GetGridRecord: TcxGridDataRow;
function GetHasPreview: Boolean;
function GetInternalCellViewInfo(Index: Integer): TcxGridDataCellViewInfo;
procedure CreateViewInfos;
procedure DestroyViewInfos;
protected
procedure AfterRowsViewInfoCalculate; override;
procedure AfterRowsViewInfoOffset; override;
procedure ApplyMergedCellsBounds(var R: TRect; AItem: TcxCustomGridTableItem);
procedure ApplyMergingCellsBounds(var R: TRect);
procedure CalculateCellViewInfo(AIndex: Integer); virtual;
function CalculateHeight: Integer; override;
function CanSize: Boolean; override;
procedure CheckRowHeight(var AValue: Integer); override;
function GetAutoHeight: Boolean; override;
function GetBackgroundBitmapBounds: TRect; override;
function GetBaseHeight: Integer; override;
function GetPainterClass: TcxCustomGridCellPainterClass; override;
procedure Offset(DX, DY: Integer); override;
procedure SetRowHeight(Value: Integer); override;
function GetCellHeight(AIndex: Integer): Integer; reintroduce; virtual;
function GetCellHeightValue: Integer; virtual;
function GetCellLeftBound(AIndex: Integer): Integer; virtual;
function GetCellTopBound(AIndex: Integer): Integer; virtual;
function GetCellsAreaBounds: TRect; virtual;
function GetCellsAreaViewInfoClass: TcxGridDataRowCellsAreaViewInfoClass; virtual;
function GetCellViewInfoClass(AIndex: Integer): TcxGridDataCellViewInfoClass; virtual;
function GetCellWidth(AIndex: Integer): Integer; virtual;
function GetPreviewViewInfoClass: TcxGridPreviewCellViewInfoClass; virtual;
function GetShowPreview: Boolean; virtual;
function IsCellVisible(AIndex: Integer): Boolean; virtual;
property CellHeight: Integer read GetCellHeightValue;
property ShowPreview: Boolean read GetShowPreview;
public
constructor Create(ARecordsViewInfo: TcxCustomGridRecordsViewInfo;
ARecord: TcxCustomGridRecord); override;
destructor Destroy; override;
procedure BeforeCellRecalculation(ACell: TcxGridTableCellViewInfo); virtual;
procedure BeforeRecalculation; override;
procedure Calculate(ALeftBound, ATopBound: Integer; AWidth: Integer = -1;
AHeight: Integer = -1); override;
function GetAreaBoundsForPainting: TRect; override;
function GetBoundsForInvalidate(AItem: TcxCustomGridTableItem): TRect; override;
function GetBoundsForItem(AItem: TcxCustomGridTableItem): TRect; override;
function GetCellBorders(AIsRight, AIsBottom: Boolean): TcxBorders; virtual;
function GetCellViewInfoByItem(AItem: TcxCustomGridTableItem): TcxGridTableDataCellViewInfo; override;
function GetHitTest(const P: TPoint): TcxCustomGridHitTest; override;
property CellsAreaBounds: TRect read GetCellsAreaBounds;
property CellsAreaViewInfo: TcxGridDataRowCellsAreaViewInfo read FCellsAreaViewInfo;
property CellViewInfoCount: Integer read GetCellViewInfoCount;
property CellViewInfos[Index: Integer]: TcxGridDataCellViewInfo read GetCellViewInfo;
property GridRecord: TcxGridDataRow read GetGridRecord;
property HasPreview: Boolean read GetHasPreview;
property InternalCellViewInfos[Index: Integer]: TcxGridDataCellViewInfo read GetInternalCellViewInfo;
property PreviewViewInfo: TcxGridPreviewCellViewInfo read FPreviewViewInfo;
end;
// new item row
TcxGridNewItemRowViewInfo = class(TcxGridDataRowViewInfo)
private
FHeight: Integer;
protected
function CalculateSelected: Boolean; override;
function GetAlignmentHorz: TAlignment; override;
function GetAlignmentVert: TcxAlignmentVert; override;
function GetAutoHeight: Boolean; override;
function GetCellLeftBound(AIndex: Integer): Integer; override;
function GetCellWidth(AIndex: Integer): Integer; override;
function GetHeight: Integer; override;
function GetInfoText: string; virtual;
function GetOptions: TcxGridSpecialRowOptions; virtual;
function GetSeparatorColor: TColor; override;
function GetSeparatorWidth: Integer; override;
function GetShowInfoText: Boolean; virtual;
function GetShowPreview: Boolean; override;
function GetStyleIndex: Integer; virtual;
function GetText: string; override;
function GetTextAreaBounds: TRect; override;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?