cxgridcustomview.pas
来自「胜天进销存源码,国产优秀的进销存」· PAS 代码 · 共 1,463 行 · 第 1/5 页
PAS
1,463 行
procedure CalculateBorderStyle;
procedure CalculateItemHeight;
property Container: TcxCustomGridItemsListBox read GetContainer;
property DragAndDropItem: TObject read GetDragAndDropItem;
property DragAndDropItemIndex: Integer read FDragAndDropItemIndex;
property GridView: TcxCustomGridView read GetGridView;
property LookAndFeelPainter: TcxCustomLookAndFeelPainterClass read GetLookAndFeelPainter;
public
constructor Create(AOwner: TComponent); override;
end;
TcxCustomGridItemsListBoxClass = class of TcxCustomGridItemsListBox;
TcxCustomGridItemsListBox = class(TcxListBox)
private
function GetDragAndDropItem: TObject;
function GetGridView: TcxCustomGridView;
function GetInnerListBox: TcxCustomGridItemsInnerListBox;
protected
function CalculateItemHeight: Integer; virtual; abstract;
function GetInnerListBoxClass: TcxInnerListBoxClass; override;
function GetDragAndDropParams: TcxCustomGridHitTest; virtual; abstract;
property DragAndDropItem: TObject read GetDragAndDropItem;
property GridView: TcxCustomGridView read GetGridView;
public
constructor Create(AOwner: TComponent); override;
function IndexOfItem(AItem: TObject): Integer;
procedure PaintDragAndDropItem(ACanvas: TcxCanvas; const R: TRect; AItem: TObject);
procedure PaintItem(ACanvas: TcxCanvas; R: TRect; AIndex: Integer; AFocused: Boolean); virtual; abstract;
procedure RefreshItems; virtual;
property InnerListBox: TcxCustomGridItemsInnerListBox read GetInnerListBox;
end;
TcxCustomGridCustomizationFormClass = class of TcxCustomGridCustomizationForm;
TcxCustomGridCustomizationForm = class(TForm)
private
FController: TcxCustomGridController;
FHookTimer: TcxTimer;
FOffset: Integer;
FPageControl: TcxPageControl;
function GetGridView: TcxCustomGridView;
function GetViewInfo: TcxCustomGridViewInfo;
procedure HookTimerHandler(Sender: TObject);
protected
procedure CreateParams(var Params: TCreateParams); override;
procedure DoClose(var Action: TCloseAction); override;
procedure DoShow; override;
procedure CalculateConsts; virtual;
procedure CreateControls; virtual;
function CreatePage(const ACaption: string; AVisible: Boolean): TcxTabSheet;
procedure GridViewChanged; virtual;
function GetContentBounds: TRect; virtual;
function GetPageControlBounds: TRect; virtual;
procedure InitPageControl; virtual;
property ContentBounds: TRect read GetContentBounds;
property GridView: TcxCustomGridView read GetGridView;
property Offset: Integer read FOffset write FOffset;
property PageControl: TcxPageControl read FPageControl;
property ViewInfo: TcxCustomGridViewInfo read GetViewInfo;
public
constructor Create(AController: TcxCustomGridController); reintroduce; virtual;
destructor Destroy; override;
property Controller: TcxCustomGridController read FController;
procedure ActivatePage(APage: TcxTabSheet);
procedure RefreshData; virtual;
end;
// popup
(*$HPPEMIT 'namespace Cxgridcustomview'}*)
(*$HPPEMIT '{'}*)
(*$HPPEMIT '__interface IcxCustomGridPopupOwner;'}*)
(*$HPPEMIT '}'*)
IcxCustomGridPopupOwner = interface
['{ACF62D23-6871-4735-A4CE-3B0888DB8FC3}']
function ClosePopupWhenNilOwner: Boolean;
function GetOwnerBounds: TRect;
procedure PopupClosed;
end;
TcxCustomGridPopup = class(TcxCustomPopupWindow)
private
FGridView: TcxCustomGridView;
FOwner: IcxCustomGridPopupOwner;
procedure SetOwner(Value: IcxCustomGridPopupOwner);
protected
function CalculateOwnerBounds: TRect; virtual;
function GetClientMinWidth: Integer; virtual;
procedure InitPopup; override;
procedure Paint; override;
procedure VisibleChanged; override;
public
constructor Create(AGridView: TcxCustomGridView); reintroduce; virtual;
procedure CloseUp; override;
procedure Popup; reintroduce; virtual;
property BorderWidths;
property GridView: TcxCustomGridView read FGridView;
property ClientMinWidth: Integer read GetClientMinWidth;
property Owner: IcxCustomGridPopupOwner read FOwner write SetOwner;
end;
TcxGridIndexes = array of Integer;
TcxGridPopupListBoxActionEvent = procedure(Sender: TcxGridPopupListBox;
AItemIndex: Integer) of object;
TcxGridPopupListBox = class(TcxListBox)
private
FCheckedIndexes: TList;
FItemTextOffsetLeft: Integer;
FItemTextOffsetRight: Integer;
FItemTextOffsetVert: Integer;
FMinWidth: Integer;
FPopup: TcxCustomGridPopup;
FPressedItemIndex: Integer;
FShowChecks: Boolean;
FVisibleItemCount: Integer;
FVisibleWidth: Integer;
FOnAction: TcxGridPopupListBoxActionEvent;
function GetChecked(Index: Integer): Boolean;
function GetCheckedIndexes: TcxGridIndexes;
function GetGridView: TcxCustomGridView;
procedure SetChecked(Index: Integer; Value: Boolean);
procedure SetCheckedIndexes(const Value: TcxGridIndexes);
procedure SetPressedItemIndex(Value: Integer);
procedure SetShowChecks(Value: Boolean);
protected
function DrawItem(ACanvas: TcxCanvas; AIndex: Integer; const ARect: TRect;
AState: TOwnerDrawState): Boolean; override;
procedure KeyDown(var Key: Word; Shift: TShiftState); override;
procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override;
procedure MouseLeave(AControl: TControl); override;
procedure MouseMove(Shift: TShiftState; X, Y: Integer); override;
procedure MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override;
function CalculateItemHeight: Integer; virtual;
procedure DoAction(AItemIndex: Integer); virtual;
procedure DrawItemCheck(ACanvas: TcxCanvas; AIndex: Integer;
const ACheckAreaRect: TRect; AState: TOwnerDrawState); virtual;
procedure DrawItemContent(ACanvas: TcxCanvas; AIndex: Integer; ARect: TRect;
AState: TOwnerDrawState); virtual;
function GetVisibleItemCount(AItems: TStrings): Integer; virtual;
procedure Init; virtual;
procedure InvalidateItem(AIndex: Integer);
function CanHaveCheck(AItemIndex: Integer): Boolean; virtual;
procedure ChangeChecked(AItemIndex: Integer); virtual;
function GetCheckAreaHeight: Integer;
function GetCheckAreaWidth: Integer;
function HasCheck(AItemIndex: Integer): Boolean; virtual;
function IsCheck(AItemIndex: Integer): Boolean;
property Checked[Index: Integer]: Boolean read GetChecked write SetChecked;
property CheckedIndexes: TcxGridIndexes read GetCheckedIndexes write SetCheckedIndexes;
property PressedItemIndex: Integer read FPressedItemIndex write SetPressedItemIndex;
property ShowChecks: Boolean read FShowChecks write SetShowChecks;
public
constructor Create(APopup: TcxCustomGridPopup); reintroduce; virtual;
destructor Destroy; override;
procedure AdjustBounds(AItems: TStrings = nil); virtual;
property GridView: TcxCustomGridView read GetGridView;
property ItemTextOffsetLeft: Integer read FItemTextOffsetLeft write FItemTextOffsetLeft;
property ItemTextOffsetRight: Integer read FItemTextOffsetRight write FItemTextOffsetRight;
property ItemTextOffsetVert: Integer read FItemTextOffsetVert write FItemTextOffsetVert;
property MinWidth: Integer read FMinWidth write FMinWidth;
property Popup: TcxCustomGridPopup read FPopup;
property VisibleItemCount: Integer read FVisibleItemCount write FVisibleItemCount;
property VisibleWidth: Integer read FVisibleWidth write FVisibleWidth;
property OnAction: TcxGridPopupListBoxActionEvent read FOnAction write FOnAction;
end;
// controllers
TcxCustomGridDesignController = class
protected
function GetControl: TcxControl; virtual; abstract;
function GetDesignObject(AObject: TPersistent): TPersistent; virtual;
public
function IsObjectSelected(AObject: TPersistent): Boolean;
procedure SelectObject(AObject: TPersistent; AClearSelection: Boolean);
procedure SelectObjects(AObjects: TList);
procedure UnselectObject(AObject: TPersistent);
property Control: TcxControl read GetControl; // TcxCustomGrid
end;
TcxGridViewDesignControllerClass = class of TcxGridViewDesignController;
TcxGridViewDesignController = class(TcxCustomGridDesignController)
private
FController: TcxCustomGridController;
protected
function GetControl: TcxControl; override;
function GetDesignObject(AObject: TPersistent): TPersistent; override;
public
constructor Create(AController: TcxCustomGridController); virtual;
property Controller: TcxCustomGridController read FController;
end;
TcxCustomGridControllerClass = class of TcxCustomGridController;
TcxCustomGridController = class(TcxGridViewHandler, IcxMouseTrackingCaller,
IcxMouseTrackingCaller2)
private
FCustomization: Boolean;
FCustomizationForm: TcxCustomGridCustomizationForm;
FCustomizationFormBounds: TRect;
FDesignController: TcxGridViewDesignController;
FHintAreaBounds: TRect;
FHintCellViewInfo: TcxCustomGridViewCellViewInfo;
FHintCheckerTimer: TcxTimer;
FHintTextRect: TRect;
FHintWindow: THintWindow;
FIsCheckingCoordinates: Boolean;
FIsDblClick: Boolean;
FIsFocusing: Boolean;
function GetDesignController: TcxGridViewDesignController;
function GetDragAndDropObject: TcxCustomGridDragAndDropObject;
function GetDragAndDropObjectClass: TcxDragAndDropObjectClass;
function GetDragImages: TcxDragImageList;
function GetIsDragging: Boolean;
function GetMouseCaptureViewInfo: TcxCustomGridCellViewInfo;
procedure SetCustomization(Value: Boolean);
procedure SetDragAndDropObjectClass(Value: TcxDragAndDropObjectClass);
procedure SetMouseCaptureViewInfo(Value: TcxCustomGridCellViewInfo);
procedure HintCheckerTimerHandler(Sender: TObject);
protected
{ IcxMouseTrackingCaller2 }
procedure MouseLeave; virtual;
function PtInCaller(const P: TPoint): Boolean; virtual;
procedure AfterPaint; virtual;
procedure BeforeKillFocus; virtual;
procedure BeforePaint; virtual;
function CanFocusOnClick(X, Y: Integer): Boolean; virtual;
function CanHandleHitTest(AHitTest: TcxCustomGridHitTest): Boolean; virtual;
procedure CheckCoordinates; virtual;
procedure DetailFocused(ADetail: TcxCustomGridView); virtual;
procedure DoEnter; virtual;
procedure DoExit; virtual;
procedure DoSetFocus(ANotifyMaster: Boolean); virtual;
function GetDesignControllerClass: TcxGridViewDesignControllerClass; virtual;
function GetDesignHitTest(AHitTest: TcxCustomGridHitTest): Boolean; virtual;
function GetMouseWheelScrollingKind: TcxMouseWheelScrollingKind; virtual;
function GetPatternObject(AObject: TPersistent): TPersistent; virtual;
procedure GridViewChanged; virtual;
function IsPixelScrollBar(AKind: TScrollBarKind): Boolean; virtual;
function MayFocus: Boolean; virtual;
procedure RemoveFocus; virtual;
procedure SetFocus(ANotifyMaster: Boolean); virtual;
procedure VisibilityChanged(AVisible: Boolean); virtual;
// customization
procedure CheckCustomizationFormBounds(var R: TRect); virtual;
procedure CustomizationChanged; virtual;
function GetCustomizationFormBounds: TRect;
function GetCustomizationFormClass: TcxCustomGridCustomizationFormClass; virtual;
function GetCustomizationFormDefaultWidth: Integer; virtual;
function GetCustomizationFormDefaultHeight: Integer; virtual;
procedure HideCustomizationForm;
procedure ShowCustomizationForm;
property DragAndDropObject: TcxCustomGridDragAndDropObject read GetDragAndDropObject;
property IsCheckingCoordinates: Boolean read FIsCheckingCoordinates;
property IsDragging: Boolean read GetIsDragging;
property IsFocusing: Boolean read FIsFocusing;
public
destructor Destroy; override;
procedure ControlFocusChanged; virtual;
procedure DesignerModified;
procedure DoCancelMode; virtual;
procedure DoCheckCoordinates;
procedure DoControlFocusChanged;
function GetCursor(X, Y: Integer): TCursor; virtual;
function HasFocusedControls: Boolean; virtual;
//function CanDrag(X, Y: Integer): Boolean; dynamic;
//function GetDragObjectClass: TDragControlObjectClass; dynamic;
procedure InitScrollBarsParameters; virtual;
function IsDataFullyVisible(AIsCallFromMaster: Boolean = False): Boolean; virtual;
procedure Scroll(AScrollBarKind: TScrollBarKind; AScrollCode: TScrollCode;
var AScrollPos: Integer); virtual;
procedure SetScrollBarInfo(AScrollBarKind: TScrollBarKind;
AMin, AMax, AStep, APage, APos: Integer; AAllowShow, AAllowHide: Boolean);
procedure UpdateScrollBars(AIgnoreUpdateLock: Boolean = False);
procedure BeginDragAndDrop; virtual;
procedure DragAndDrop(const P: TPoint; var Accepted: Boolean); virtual;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?