cxgridcustomtableview.pas
来自「胜天进销存源码,国产优秀的进销存」· PAS 代码 · 共 1,405 行 · 第 1/5 页
PAS
1,405 行
destructor Destroy; override;
procedure HideEdit(Accept: Boolean); virtual;
procedure RemoveEdit(AProperties: TcxCustomEditProperties); virtual;
procedure ShowEdit(AItem: TcxCustomGridTableItem = nil); overload;
procedure ShowEdit(AItem: TcxCustomGridTableItem; Key: Char); overload;
procedure ShowEdit(AItem: TcxCustomGridTableItem; Shift: TShiftState; X, Y: Integer); overload;
procedure UpdateEdit;
procedure StartEditShowingTimer(AItem: TcxCustomGridTableItem);
procedure StopEditShowingTimer;
property Controller: TcxCustomGridTableController read FController;
property Edit: TcxCustomEdit read FEdit;
property EditingItem: TcxCustomGridTableItem read FEditingItem write SetEditingItem;
property GridView: TcxCustomGridTableView read GetGridView;
property IsEditing: Boolean read GetIsEditing;
end;
TcxGridDragOpenInfoExpand = class(TcxCustomGridDragOpenInfo)
public
GridRecord: TcxCustomGridRecord;
constructor Create(AGridRecord: TcxCustomGridRecord); virtual;
function Equals(AInfo: TcxCustomGridDragOpenInfo): Boolean; override;
procedure Run; override;
end;
TcxCustomGridTableCanItemFocus = function(AOwner: TcxCustomGridTableView;
AItemIndex: Integer; AData: TObject): Boolean;
TcxCustomGridTableController = class(TcxCustomGridController)
private
FAllowAppendRecord: Boolean;
FAllowCheckEdit: Boolean;
FBlockRecordKeyboardHandling: Boolean;
FCheckEditNeeded: Boolean;
FCheckingCoordinate: Boolean;
FClickedCellViewInfo: TcxGridTableDataCellViewInfo;
FDragDropText: string;
FDragScrollDirection: TcxDirection;
FDragScrollTimer: TcxTimer;
FDragHighlightedRecord: TcxCustomGridRecord;
FEatKeyPress: Boolean;
FEditingController: TcxGridEditingController;
FFilterMRUItemsPopup: TcxGridFilterMRUItemsPopup;
FFilterPopup: TcxGridFilterPopup;
FFocusedItem: TcxCustomGridTableItem;
FFocusOnRecordFocusing: Boolean;
FForcingWidthItem: TcxCustomGridTableItem;
FGridModeBufferCountUpdateNeeded: Boolean;
FGridModeBufferCountUpdateTimer: TcxTimer;
FIsPullFocusing: Boolean;
FIsReadyForImmediateEditing: Boolean;
FIsRecordUnselecting: Boolean;
FItemsCustomizationPopup: TcxCustomGridItemsCustomizationPopup;
FMovingItem: TcxCustomGridTableItem;
FPullFocusingItem: TcxCustomGridTableItem;
FPullFocusingMousePos: TPoint;
FPullFocusingOriginHitTest: TcxCustomGridHitTest;
FPullFocusingRecordId: Variant;
FPullFocusingScrollingDirection: TcxDirection;
FPullFocusingScrollingTimer: TcxTimer;
FScrollDirection: TcxDirection;
FScrollTimer: TcxTimer;
FTopRecordIndex: Integer;
FUnselectingRecordIndex: Integer;
function GetEditingItem: TcxCustomGridTableItem;
function GetFilterMRUItemsPopup: TcxGridFilterMRUItemsPopup;
function GetFilterPopup: TcxGridFilterPopup;
function GetFocusedItemIndex: Integer;
function GetFocusedRecordIndex: Integer;
function GetGridView: TcxCustomGridTableView;
function GetIncSearchingItem: TcxCustomGridTableItem;
function GetIncSearchingText: string;
function GetIsEditing: Boolean;
function GetIsIncSearching: Boolean;
function GetIsItemMoving: Boolean;
function GetItemsCustomizationPopup: TcxCustomGridItemsCustomizationPopup;
function GetMasterController: TcxCustomGridTableController;
function GetMultiSelect: Boolean;
function GetNewItemRecordFocused: Boolean;
function GetSelectedRecord(Index: Integer): TcxCustomGridRecord;
function GetSelectedRecordCount: Integer;
function GetViewData: TcxCustomGridTableViewData;
function GetViewInfo: TcxCustomGridTableViewInfo;
procedure SetDragHighlightedRecord(Value: TcxCustomGridRecord);
procedure SetEditingItem(Value: TcxCustomGridTableItem);
procedure SetFocusedItem(Value: TcxCustomGridTableItem);
procedure SetFocusedItemIndex(Value: Integer);
procedure SetFocusedRecordIndex(Value: Integer);
procedure SetIncSearchingText(const Value: string);
procedure SetInternalTopRecordIndex(Value: Integer);
procedure SetNewItemRecordFocused(Value: Boolean);
procedure SetScrollDirection(Value: TcxDirection);
procedure SetTopRecordIndex(Value: Integer);
procedure DragScrollTimerHandler(Sender: TObject);
procedure GridModeBufferCountUpdateTimerHandler(Sender: TObject);
procedure PullFocusingScrollingTimerHandler(Sender: TObject);
procedure CreateScrollTimer;
procedure DestroyScrollTimer;
procedure ScrollTimerHandler(Sender: TObject);
protected
procedure AfterPaint; override;
procedure BeforePaint; override;
function CanFocusOnClick(X, Y: Integer): Boolean; override;
procedure DetailFocused(ADetail: TcxCustomGridView); override;
procedure DoEnter; override;
procedure DoExit; override;
function MayFocus: Boolean; override;
procedure RemoveFocus; override;
procedure SetFocus(ANotifyMaster: Boolean); override;
procedure AfterOffset; virtual;
procedure BeforeKillFocus; override;
procedure BeforeOffset; virtual;
function CanAppend(ACheckOptions: Boolean): Boolean; virtual;
procedure CancelCheckEditPost;
function CanDelete(ACheckOptions: Boolean): Boolean; virtual;
function CanEdit: Boolean; virtual;
procedure CheckCoordinates; override;
function CanHScrollBarHide: Boolean; virtual;
function CanInsert(ACheckOptions: Boolean): Boolean; virtual;
procedure CheckEdit; virtual;
procedure CheckTopRecordIndex(var Value: Integer); virtual;
function FindNextCustomItem(AFocusedItemIndex, AItemCount: Integer;
AGoForward, AGoOnCycle: Boolean; ACanFocus: TcxCustomGridTableCanItemFocus;
AData: TObject; var AItemIndex: Integer; out ACycleChanged: Boolean): Boolean;
procedure FocusedItemChanged(APrevFocusedItem: TcxCustomGridTableItem); virtual;
procedure FocusedRecordChanged(APrevFocusedRecordIndex, AFocusedRecordIndex: Integer;
ANewItemRecordFocusingChanged: Boolean); virtual;
function GetCancelEditingOnExit: Boolean; virtual;
function GetFilterMRUItemsPopupClass: TcxGridFilterMRUItemsPopupClass; virtual;
function GetFilterPopupClass: TcxGridFilterPopupClass; virtual;
function GetFocusedRecord: TcxCustomGridRecord; virtual;
function GetIsRecordsScrollHorizontal: Boolean; virtual; abstract;
function GetItemsCustomizationPopupClass: TcxCustomGridItemsCustomizationPopupClass; virtual;
function GetMaxTopRecordIndexValue: Integer; virtual;
function GetPatternObject(AObject: TPersistent): TPersistent; override;
function GetScrollBarOffsetBegin: Integer; virtual;
function GetScrollBarOffsetEnd: Integer; virtual;
function GetScrollBarPos: Integer; virtual;
function GetScrollBarRecordCount: Integer; virtual;
function GetVisibleRecordCount(AFirstRecordIndex: Integer;
ACalculateDown: Boolean = True): Integer; virtual;
procedure PostCheckEdit;
procedure ProcessCheckEditPost;
procedure ScrollData(ADirection: TcxDirection); virtual;
procedure SetFocusedRecord(Value: TcxCustomGridRecord); virtual;
procedure SetScrollBarPos(Value: Integer); virtual;
procedure CancelGridModeBufferCountUpdate;
procedure CheckGridModeBufferCountUpdatePost;
procedure PostGridModeBufferCountUpdate;
property GridModeBufferCountUpdateNeeded: Boolean read FGridModeBufferCountUpdateNeeded;
// internal draganddrop data scrolling
function CanScrollData(ADirection: TcxDirection): Boolean; virtual;
function GetScrollDataTimeInterval(ADirection: TcxDirection): Integer; virtual;
property ScrollDirection: TcxDirection read FScrollDirection write SetScrollDirection;
// selection
function CanPostponeRecordSelection: Boolean; virtual;
function CanProcessMultiSelect(AIsKeyboard: Boolean): Boolean; overload; virtual;
function CanProcessMultiSelect(AHitTest: TcxCustomGridHitTest;
AShift: TShiftState): Boolean; overload; virtual;
function CanProcessMultiSelect(AKey: Word; AShift: TShiftState;
AFocusedRecordChanged: Boolean): Boolean; overload; virtual;
procedure ChangeRecordSelection(ARecord: TcxCustomGridRecord; Value: Boolean);
procedure CheckFocusedRecordSelectionWhenExit(ARecord: TcxCustomGridRecord);
procedure DoMouseNormalSelection(AHitTest: TcxCustomGridHitTest); virtual;
procedure DoMouseRangeSelection(AClearSelection: Boolean = True; AData: TObject = nil); virtual;
procedure DoNormalSelection; virtual;
procedure DoNormalSelectionWithAnchor(ASelect: Boolean = True);
procedure DoRangeSelection(AClearSelection: Boolean = True);
procedure DoToggleRecordSelection;
procedure FinishSelection; virtual;
procedure InvalidateFocusedRecord; virtual;
procedure InvalidateSelection; virtual;
function IsKeyForMultiSelect(AKey: Word; AShift: TShiftState;
AFocusedRecordChanged: Boolean): Boolean; virtual;
function IsRecordSelected(ARecord: TcxCustomGridRecord): Boolean;
procedure MultiSelectKeyDown(var Key: Word; Shift: TShiftState); virtual;
procedure MultiSelectMouseDown(AHitTest: TcxCustomGridHitTest; AShift: TShiftState); virtual;
procedure MultiSelectMouseUp(AHitTest: TcxCustomGridHitTest; AShift: TShiftState); virtual;
procedure SelectFocusedRecord;
procedure SetSelectionAnchor(AGridRecordIndex: Integer);
function SupportsAdditiveSelection: Boolean; virtual;
function SupportsRecordSelectionToggling: Boolean; virtual;
// navigation
function CanFocusNextItem(AFocusedItemIndex, ANextItemIndex: Integer;
AGoForward, AGoOnCycle, AGoToNextRecordOnCycle: Boolean): Boolean; virtual;
function FocusedRecordHasCells(ACheckCellSelectionAbility: Boolean): Boolean;
procedure FocusNextPage(ASyncSelection: Boolean); virtual;
procedure FocusPrevPage(ASyncSelection: Boolean); virtual;
function IsKeyForController(AKey: Word; AShift: TShiftState): Boolean; virtual;
procedure ScrollPage(AForward: Boolean); virtual;
procedure ScrollRecords(AForward: Boolean; ACount: Integer); virtual;
procedure ShowNextPage; virtual;
procedure ShowPrevPage; virtual;
// pull focusing
procedure DoPullFocusing(AHitTest: TcxGridRecordHitTest); virtual;
procedure DoPullFocusingScrolling(ADirection: TcxDirection); virtual;
function GetPullFocusingScrollingDirection(X, Y: Integer; out ADirection: TcxDirection): Boolean; virtual;
function IsPullFocusingPosChanged: Boolean;
procedure SavePullFocusingPos;
procedure StartPullFocusing(AHitTest: TcxCustomGridHitTest); virtual;
procedure StopPullFocusing;
procedure StartPullFocusingScrolling(ADirection: TcxDirection);
procedure StopPullFocusingScrolling;
function SupportsPullFocusing: Boolean; virtual;
property PullFocusingOriginHitTest: TcxCustomGridHitTest read FPullFocusingOriginHitTest;
// delphi drag and drop
function GetDragScrollDirection(X, Y: Integer): TcxDirection; virtual;
function GetDragScrollInterval: Integer; virtual;
function IsFirstRecordForDragScroll(ARecord: TcxCustomGridRecord): Boolean; virtual;
function IsLastRecordForDragScroll(ARecord: TcxCustomGridRecord): Boolean; virtual;
procedure ProcessDragFocusing(X, Y: Integer);
procedure StartDragScroll(ADirection: TcxDirection);
procedure StopDragScroll;
function IsDragScroll: Boolean;
//---
function GetDragOpenInfo(AHitTest: TcxCustomGridHitTest): TcxCustomGridDragOpenInfo; virtual;
function IsDragOpenHitTest(AHitTest: TcxCustomGridHitTest;
out ADragOpenInfo: TcxCustomGridDragOpenInfo): Boolean;
//---
property DragHighlightedRecord: TcxCustomGridRecord read FDragHighlightedRecord write SetDragHighlightedRecord;
// incsearching
function GetItemForIncSearching: TcxCustomGridTableItem; virtual;
procedure IncSearchKeyDown(var Key: Word; Shift: TShiftState); virtual;
property ItemForIncSearching: TcxCustomGridTableItem read GetItemForIncSearching;
function GetEditingControllerClass: TcxGridEditingControllerClass; virtual;
property AllowAppendRecord: Boolean read FAllowAppendRecord write FAllowAppendRecord;
property AllowCheckEdit: Boolean read FAllowCheckEdit write FAllowCheckEdit;
property BlockRecordKeyboardHandling: Boolean read FBlockRecordKeyboardHandling
write FBlockRecordKeyboardHandling;
property CancelEditingOnExit: Boolean read GetCancelEditingOnExit;
property EatKeyPress: Boolean read FEatKeyPress write FEatKeyPress;
property FocusOnRecordFocusing: Boolean read FFocusOnRecordFocusing write FFocusOnRecordFocusing;
property ForcingWidthItem: TcxCustomGridTableItem read FForcingWidthItem write FForcingWidthItem;
property InternalTopRecordIndex: Integer read FTopRecordIndex write SetInternalTopRecordIndex;
property IsReadyForImmediateEditing: Boolean read FIsReadyForImmediateEditing
write FIsReadyForImmediateEditing;
property IsRecordsScrollHorizontal: Boolean read GetIsRecordsScrollHorizontal;
property MultiSelect: Boolean read GetMultiSelect;
property ScrollBarOffsetBegin: Integer read GetScrollBarOffsetBegin;
property ScrollBarOffsetEnd: Integer read GetScrollBarOffsetEnd;
property ScrollBarRecordCount: Integer read GetScrollBarRecordCount;
property ScrollBarPos: Integer read GetScrollBarPos write SetScrollBarPos;
property ViewData: TcxCustomGridTableViewData read GetViewData;
property ViewInfo: TcxCustomGridTableViewInfo read GetViewInfo;
public
constructor Create(AGridView: TcxCustomGridView); override;
destructor Destroy; override;
procedure BeginDragAndDrop; override;
procedure ControlFocusChanged; override;
procedure DoCancelMode; override;
procedure DoKeyDown(var Key: Word; Shift: TShiftState); override;
procedure EndDragAndDrop(Accepted: Boolean); override;
function FindNextItem(AFocusedItemIndex: Integer;
AGoForward, AGoOnCycle, AFollowVisualOrder: Boolean; out ACycleChanged: Boolean;
ARecord: TcxCustomGridRecord): Integer; virtual;
function FindNextRecord(AFocusedRecordIndex: Integer;
AGoForward, AGoOnCycle: Boolean; out ACycleChanged: Boolean): Integer;
function HasFilterMRUItemsPopup: Boolean;
function HasFilterPopup: Boolean;
function HasFocusedControls: Boolean; override;
function HasItemsCustomizationPopup: Boolean;
function IsClickableRecordHitTest(AHitTest: TcxCustomGridHitTest): Boolean;
function IsDataFullyVisible(AIsCallFromMaster: Boolean = False): Boolean; override;
procedure KeyDown(var Key: Word; Shift: TShiftState); override;
procedure KeyPress(var Key: Char); override;
p
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?