cxgridcustomview.pas
来自「胜天进销存源码,国产优秀的进销存」· PAS 代码 · 共 1,463 行 · 第 1/5 页
PAS
1,463 行
procedure EndDragAndDrop(Accepted: Boolean); virtual;
function StartDragAndDrop(const P: TPoint): Boolean; virtual;
// delphi drag and drop
procedure BeforeStartDrag; virtual;
function CanDrag(X, Y: Integer): Boolean; virtual;
procedure DragDrop(Source: TObject; X, Y: Integer); virtual;
procedure DragOver(Source: TObject; X, Y: Integer; State: TDragState;
var Accept: Boolean); virtual;
procedure DrawDragImage(ACanvas: TcxCanvas; R: TRect); virtual;
procedure EndDrag(Target: TObject; X, Y: Integer); virtual;
function GetDragImagesSize: TPoint; virtual;
function HasDragImages: Boolean; virtual;
procedure StartDrag(var DragObject: TDragObject); virtual;
property DragImages: TcxDragImageList read GetDragImages;
// hints
function CanShowHint: Boolean; virtual;
procedure HideHint;
function GetHintWindowClass: THintWindowClass; virtual;
procedure ShowHint(const AHintAreaBounds, ATextRect: TRect; const AText: string;
AIsHintMultiLine: Boolean; AFont: TFont; AHintCellViewInfo: TcxCustomGridViewCellViewInfo);
procedure StartHintCheckerTimer;
procedure StopHintCheckerTimer;
property HintCellViewInfo: TcxCustomGridViewCellViewInfo read FHintCellViewInfo;
property HintWindow: THintWindow read FHintWindow;
procedure DoKeyDown(var Key: Word; Shift: TShiftState); virtual;
procedure KeyDown(var Key: Word; Shift: TShiftState); virtual;
procedure KeyPress(var Key: Char); virtual;
procedure KeyUp(var Key: Word; Shift: TShiftState); virtual;
procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); virtual;
procedure MouseMove(Shift: TShiftState; X, Y: Integer); virtual;
procedure MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); virtual;
function ProcessDetailDialogChar(ADetail: TcxCustomGridView; ACharCode: Word): Boolean; virtual;
function ProcessDialogChar(ACharCode: Word): Boolean; virtual;
procedure WndProc(var Message: TMessage); virtual;
procedure RefreshCustomizationForm;
{procedure BeginCellMouseTracking(AViewInfo: TcxCustomGridCellViewInfo);
procedure EndCellMouseTracking(AViewInfo: TcxCustomGridCellViewInfo);}
property Customization: Boolean read FCustomization write SetCustomization;
property CustomizationForm: TcxCustomGridCustomizationForm read FCustomizationForm;
property CustomizationFormBounds: TRect read FCustomizationFormBounds
write FCustomizationFormBounds;
property DesignController: TcxGridViewDesignController read GetDesignController;
property DragAndDropObjectClass: TcxDragAndDropObjectClass read GetDragAndDropObjectClass
write SetDragAndDropObjectClass;
property IsDblClick: Boolean read FIsDblClick;
property MouseCaptureViewInfo: TcxCustomGridCellViewInfo read GetMouseCaptureViewInfo
write SetMouseCaptureViewInfo;
end;
{ datacontroller }
// sorting by summary
TcxDataGroupNode = class
private
FChilds: TList;
FDataGroupInfo: TcxDataGroupInfo;
FParent: TcxDataGroupNode;
function GetChild(Index: Integer): TcxDataGroupNode;
function GetChildCount: Integer;
public
constructor Create(AParent: TcxDataGroupNode; ADataGroupInfo: TcxDataGroupInfo);
destructor Destroy; override;
function AddChild(ADataGroupInfo: TcxDataGroupInfo): TcxDataGroupNode;
property ChildCount: Integer read GetChildCount;
property Childs[Index: Integer]: TcxDataGroupNode read GetChild; default;
property DataGroupInfo: TcxDataGroupInfo read FDataGroupInfo;
property Parent: TcxDataGroupNode read FParent;
end;
TcxSortingBySummaryInfo = class
SortOrder: TcxDataSortOrder;
SummaryItemIndex: Integer;
end;
TcxGridSortingBySummaryEngine = class(TcxSortingBySummaryEngine)
private
FInfos: TList;
FRootNode: TcxDataGroupNode;
function GetDataGroups: TcxDataGroups;
function GetInfo(Index: Integer): TcxSortingBySummaryInfo;
function GetInfoCount: Integer;
protected
procedure AddInfo(AInfo: TcxSortingBySummaryInfo);
procedure BuildNodes(AParentNode: TcxDataGroupNode; ALevel: Integer; var ACurIndex: Integer);
procedure ClearInfos;
function CompareGroupsBySummary(AInfo1, AInfo2: Pointer): Integer;
procedure RebuildDataGroupRecursive(AParentNode: TcxDataGroupNode; var ABeginRecordListIndex: Integer);
procedure RebuildDataGroups;
procedure SortNodeRecursive(ANode: TcxDataGroupNode; ALevel: Integer);
procedure SortNodes;
property DataGroups: TcxDataGroups read GetDataGroups;
property InfoCount: Integer read GetInfoCount;
property Infos[Index: Integer]: TcxSortingBySummaryInfo read GetInfo;
public
constructor Create(ADataControllerInfo: TcxCustomDataControllerInfo); override;
destructor Destroy; override;
procedure Sort; override;
end;
// interface to data controller
IcxCustomGridDataController = interface
['{B9ABDC6B-1A4A-4F11-A629-09B6FB9FB4BA}']
procedure AssignData(ADataController: TcxCustomDataController);
procedure CreateAllItems(AMissingItemsOnly: Boolean);
procedure DeleteAllItems;
procedure GetFakeComponentLinks(AList: TList);
function GetGridView: TcxCustomGridView;
function HasAllItems: Boolean;
function IsDataChangeable: Boolean;
function IsDataLinked: Boolean;
function SupportsCreateAllItems: Boolean;
property GridView: TcxCustomGridView read GetGridView;
end;
{ painters }
TcxCustomGridCellPainterClass = class of TcxCustomGridCellPainter;
TcxCustomGridCellPainter = class
private
FCanvas: TcxCanvas;
FViewInfo: TcxCustomGridCellViewInfo;
function GetIsMainCanvasInUseValue: Boolean;
protected
procedure AfterPaint; virtual;
procedure BeforePaint; virtual;
function CanDrawDesignSelection: Boolean; virtual;
procedure DoExcludeFromClipRect; virtual;
procedure DrawBackground; overload; virtual;
procedure DrawBackground(const R: TRect); overload; virtual;
function DrawBackgroundHandler(ACanvas: TcxCanvas; const ABounds: TRect): Boolean; virtual;
procedure DrawBorder(ABorder: TcxBorder); virtual;
procedure DrawBorders; virtual;
procedure DrawContent; virtual;
class procedure DrawDesignSelection(ACanvas: TcxCanvas;
AViewInfo: TcxCustomGridCellViewInfo); virtual;
procedure DrawText; virtual;
function ExcludeFromClipRect: Boolean; virtual;
class function GetIsMainCanvasInUse(ACanvas: TcxCanvas; AViewInfo: TcxCustomGridCellViewInfo): Boolean;
function NeedsPainting: Boolean; virtual;
procedure Paint; virtual;
procedure PrepareCanvasForDrawText; virtual;
procedure UnprepareCanvasForDrawText; virtual;
property Canvas: TcxCanvas read FCanvas;
property IsMainCanvasInUse: Boolean read GetIsMainCanvasInUseValue;
property ViewInfo: TcxCustomGridCellViewInfo read FViewInfo;
public
constructor Create(ACanvas: TcxCanvas; AViewInfo: TcxCustomGridCellViewInfo); virtual;
class procedure DoDrawDesignSelection(ACanvas: TcxCanvas;
AViewInfo: TcxCustomGridCellViewInfo); virtual;
procedure MainPaint; virtual;
end;
TcxGridDesignSelectorPainter = class(TcxCustomGridCellPainter)
private
function GetViewInfo: TcxGridDesignSelectorViewInfo;
protected
procedure DoExcludeFromClipRect; override;
procedure DrawSign(AColor: TColor); virtual;
function ExcludeFromClipRect: Boolean; override;
procedure Paint; override;
property ViewInfo: TcxGridDesignSelectorViewInfo read GetViewInfo;
end;
TcxCustomGridPainterClass = class of TcxCustomGridPainter;
TcxCustomGridPainter = class(TcxGridViewHandler)
private
FBackgroundRegion: TcxRegion;
FBeforePaintClipRegion: TcxRegion;
FCanvas: TcxCanvas;
FViewInfo: TcxCustomGridViewInfo;
function GetCanvas: TcxCanvas;
function GetViewInfo: TcxCustomGridViewInfo;
protected
procedure DrawBackground; virtual;
procedure PaintAfter; virtual;
procedure PaintBefore; virtual;
procedure PaintContent; virtual;
property Canvas: TcxCanvas read GetCanvas write FCanvas;
property ViewInfo: TcxCustomGridViewInfo read GetViewInfo write FViewInfo;
public
procedure DrawFocusRect(const R: TRect; AHideFocusRect: Boolean); virtual;
procedure ExcludeFromBackground(const R: TRect);
procedure Paint(ACanvas: TcxCanvas = nil; AViewInfo: TcxCustomGridViewInfo = nil);
procedure Invalidate; overload;
procedure Invalidate(const R: TRect); overload;
procedure Invalidate(ARegion: TcxRegion); overload;
end;
{ viewdata }
TcxCustomGridViewDataClass = class of TcxCustomGridViewData;
TcxCustomGridViewData = class(TcxGridViewHandler)
public
function GetSortingBySummaryEngineClass: TcxSortingBySummaryEngineClass; virtual;
function IsEmpty: Boolean; virtual;
function MakeDetailVisible(ADetailLevel: TComponent{TcxGridLevel}): TcxCustomGridView; virtual;
property DataController;
end;
{ viewinfos }
TcxGridSiteClass = class of TcxGridSite;
TcxGridSite = class(TcxControl)
private
FBoundsChangedTimer: TcxTimer;
FIgnoreUpdateLock: Boolean;
FSize: TPoint;
FViewInfo: TcxCustomGridViewInfo;
function GetContainer: TcxControl;
function GetController: TcxCustomGridController;
function GetGridView: TcxCustomGridView;
function GetPainter: TcxCustomGridPainter;
procedure SendKeyDownNotification(var Message: TWMKeyDown);
procedure CNKeyDown(var Message: TWMKeyDown); message CN_KEYDOWN;
procedure CNSysKeyDown(var Message: TWMKeyDown); message CN_SYSKEYDOWN;
procedure BoundsChangedTimerHandler(Sender: TObject);
protected
function AllowAutoDragAndDropAtDesignTime(X, Y: Integer;
Shift: TShiftState): Boolean; override;
function AllowDragAndDropWithoutFocus: Boolean; override;
procedure BeforeMouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override;
procedure BoundsChanged; override;
function CanDrag(X, Y: Integer): Boolean; override;
function CanFocusOnClick(X, Y: Integer): Boolean; override;
procedure DoCancelMode; override;
procedure DoContextPopup(MousePos: TPoint; var Handled: Boolean); override;
procedure DoEnter; override;
procedure DoExit; override;
procedure FocusChanged; override;
function FocusWhenChildIsClicked(AChild: TControl): Boolean; override;
function GetClientBounds: TRect; override;
function GetCursor(X, Y: Integer): TCursor; override;
function GetDesignHitTest(X, Y: Integer; Shift: TShiftState): Boolean; override;
function GetIsDesigning: Boolean; override;
function GetIsFocused: Boolean; override;
function GetMouseWheelScrollingKind: TcxMouseWheelScrollingKind; override;
function IsPixelScrollBar(AKind: TScrollBarKind): Boolean; override;
procedure KeyDown(var Key: Word; Shift: TShiftState); override;
procedure KeyPress(var Key: Char); override;
procedure KeyUp(var Key: Word; Shift: TShiftState); override;
function MayFocus: Boolean; override;
procedure MouseLeave(AControl: TControl); override;
procedure MouseMove(Shift: TShiftState; X, Y: Integer); override;
procedure MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override;
procedure Paint; override;
procedure RequestAlign; override;
procedure SetParent(AParent: TWinControl); override;
procedure WndProc(var Message: TMessage); override;
procedure DoEndDrag(Target: TObject; X, Y: Integer); override;
procedure DoStartDrag(var DragObject: TDragObject); override;
procedure DragOver(Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean); override;
procedure DrawDragImage(ACanvas: TcxCanvas; const R: TRect); override;
function GetDragImagesSize: TPoint; override;
function HasDragImages: Boolean; override;
function GetHScrollBarBounds: TRect; override;
procedure InitScrollBarsParameters; override;
procedure Scroll(AScrollBarKind: TScrollBarKind; AScrollCode: TScrollCode;
var AScrollPos: Integer); override;
procedure UpdateScrollBars; override;
procedure DragAndDrop(const P: TPoint; var Accepted: Boolean); override;
procedure EndDragAndDrop(Accepted: Boolean); override;
function StartDragAndDrop(const P: TPoint): Boolean; override;
procedure CancelPostBoundsChanged;
procedure InitTabStop(AParent: TWinControl);
procedure PostBoundsChanged;
procedure UpdateSize;
property Controller: TcxCustomGridController read GetController;
property IgnoreUpdateLock: Boolean read FIgnoreUpdateLock write FIgnoreUpdateLock;
property Painter: TcxCustomGridPainter read GetPainter;
public
constructor Create(AViewInfo: TcxCustomGridViewInfo); reintroduce; virtual;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?