cxinplacecontainer.pas
来自「胜天进销存源码,国产优秀的进销存」· PAS 代码 · 共 1,419 行 · 第 1/5 页
PAS
1,419 行
FControl: TcxEditingControl;
function GetController: TcxCustomControlController;
protected
property Control: TcxEditingControl read FControl;
property Controller: TcxCustomControlController read GetController;
public
constructor Create(AControl: TcxEditingControl); virtual;
function IsObjectSelected(AObject: TPersistent): Boolean; virtual; abstract;
procedure Select(AObject: TPersistent; AShift: TShiftState); virtual; abstract;
procedure UnselectObject(AObject: TPersistent); virtual; abstract;
end;
TcxCustomDesignSelectionHelperClass = class of TcxCustomDesignSelectionHelper;
{ TcxCustomControlController }
TcxCustomControlController = class
private
FAllowCheckEdit: Boolean;
FBlockRecordKeyboardHandling: Boolean;
FCheckEditNeeded: Boolean;
FDisableCellsRefresh: Boolean;
FDragCancel: Boolean;
FDragItem: TObject;
FEatKeyPress: Boolean;
FEditingBeforeDrag: Boolean;
FEditingController: TcxEditingController;
FEditingControl: TcxEditingControl;
FFocused: Boolean;
FFocusedItem: TcxCustomInplaceEditContainer;
FHitTestController: TcxCustomHitTestController;
FHotTrackController: TcxHotTrackController;
FIsDblClick: Boolean;
FIsHandleTabStop: Boolean;
FLockShowHint: Boolean;
FNavigator: TcxCustomCellNavigator;
FWasFocusedBeforeClick: Boolean;
function GetDataController: TcxCustomDataController;
function GetDesignSelectionHelper: TcxCustomDesignSelectionHelper;
function GetEditingItem: TcxCustomInplaceEditContainer;
function GetIsEditing: Boolean;
function GetItemForIncSearching: TcxCustomInplaceEditContainer;
procedure SetEditingItem(Value: TcxCustomInplaceEditContainer);
procedure SetIncSearchingText(const Value: string);
protected
procedure MouseEnter; virtual;
procedure MouseLeave; virtual;
procedure DoCancelMode; virtual;
procedure AfterPaint; virtual;
procedure BeforeEditKeyDown(var Key: Word; var Shift: TShiftState); virtual;
procedure BeforeMouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); virtual;
procedure BeforePaint; virtual;
procedure BeforeShowEdit; virtual;
procedure BehaviorChanged; virtual;
procedure CancelCheckEditPost;
function CanFocusedRecordIndex(AIndex: Integer): Boolean; virtual;
procedure CheckEdit; virtual;
procedure DoEditDblClick(Sender: TObject); virtual;
procedure DoMouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); virtual;
procedure DoMouseMove(Shift: TShiftState; X, Y: Integer); virtual;
procedure DoMouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); virtual;
procedure DoNextPage(AForward: Boolean; Shift: TShiftState); virtual;
function GetEditingViewInfo: TcxEditCellViewInfo; virtual;
function GetFocused: Boolean; virtual;
function GetFocusedCellViewInfo(AEditContainer: TcxCustomInplaceEditContainer): TcxEditCellViewInfo; virtual;
function GetFocusedRecordIndex: Integer; virtual;
function GetResizeDirection: TcxDragSizingDirection; virtual;
procedure FocusedItemChanged(APrevFocusedItem: TcxCustomInplaceEditContainer); virtual;
procedure FocusedRecordChanged(APrevFocusedRecordIndex, AFocusedRecordIndex: Integer); virtual;
function HasFocusedControls: Boolean; virtual;
procedure HideHint; virtual;
function IncSearchKeyDown(AKey: Word; AShift: TShiftState): Word; virtual;
procedure InternalSetFocusedItem(Value: TcxCustomInplaceEditContainer);
function IsImmediatePost: Boolean; virtual;
function IsKeyForController(AKey: Word; AShift: TShiftState): Boolean; virtual;
procedure PostCheckEdit;
procedure PostShowEdit;
procedure ProcessCheckEditPost;
procedure RefreshFocusedCellViewInfo(AItem: TcxCustomInplaceEditContainer); virtual;
procedure RefreshFocusedRecord; virtual;
procedure SetFocused(Value: Boolean); virtual;
procedure SetFocusedItem(Value: TcxCustomInplaceEditContainer); virtual;
procedure SetFocusedRecordIndex(Value: Integer); virtual;
// behavior options
function GetAlwaysShowEditor: Boolean; virtual;
function GetCancelEditingOnExit: Boolean; virtual;
function GetFocusCellOnCycle: Boolean; virtual;
function GetGoToNextCellOnEnter: Boolean; virtual;
function GetGoToNextCellOnTab: Boolean; virtual;
function GetImmediateEditor: Boolean; virtual;
// drag'n'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 EndDrag(Target: TObject; X, Y: Integer); virtual;
function GetDragAndDropObject: TcxCustomControlDragAndDropObject;
function GetDragAndDropObjectClass: TcxDragAndDropObjectClass; virtual;
function GetIsDragging: Boolean; virtual;
function GetNavigatorClass: TcxCustomCellNavigatorClass; virtual;
procedure StartDrag(var DragObject: TDragObject); virtual;
// scrolling
function GetMouseWheelScrollingKind: TcxMouseWheelScrollingKind; virtual;
function IsPixelScrollBar(AKind: TScrollBarKind): Boolean; virtual;
// focus
procedure DoEnter; virtual;
procedure DoExit; virtual;
function MayFocus: Boolean; virtual;
procedure FocusChanged; virtual;
procedure RemoveFocus; virtual;
procedure SetFocus; virtual;
// incremental search
procedure CancelIncSearching; virtual;
function GetIncSearchingItem: TcxCustomInplaceEditContainer; virtual;
function GetIncSearchingText: string; virtual;
function GetIsIncSearching: Boolean; virtual;
procedure SearchLocate(AItem: TcxCustomInplaceEditContainer; const Value: string); virtual;
procedure SearchLocateNext(AItem: TcxCustomInplaceEditContainer; AForward: Boolean); virtual;
procedure UpdateRecord(ARecordIndex: Integer); virtual;
property AllowCheckEdit: Boolean read FAllowCheckEdit write FAllowCheckEdit;
property BlockRecordKeyboardHandling: Boolean read FBlockRecordKeyboardHandling
write FBlockRecordKeyboardHandling;
property DesignSelectionHelper: TcxCustomDesignSelectionHelper read GetDesignSelectionHelper;
property DisableCellsRefresh: Boolean read FDisableCellsRefresh write FDisableCellsRefresh;
property DragAndDropObject: TcxCustomControlDragAndDropObject read GetDragAndDropObject;
property DragCancel: Boolean read FDragCancel write FDragCancel;
property DragItem: TObject read FDragItem write FDragItem;
property EatKeyPress: Boolean read FEatKeyPress write FEatKeyPress;
property EditingControl: TcxEditingControl read FEditingControl;
property EditingController: TcxEditingController read FEditingController;
property EditingItem: TcxCustomInplaceEditContainer read GetEditingItem write SetEditingItem;
property EditingViewInfo: TcxEditCellViewInfo read GetEditingViewInfo;
property HotTrackController: TcxHotTrackController read FHotTrackController;
property HitTestController: TcxCustomHitTestController read FHitTestController;
property IncSearchingText: string read GetIncSearchingText write SetIncSearchingText;
property IncSearchingItem: TcxCustomInplaceEditContainer read GetIncSearchingItem;
property IsHandleTabStop: Boolean read FIsHandleTabStop write FIsHandleTabStop;
property IsDragging: Boolean read GetIsDragging;
property IsIncSearching: Boolean read GetIsIncSearching;
property ItemForIncSearching: TcxCustomInplaceEditContainer read GetItemForIncSearching;
property LockShowHint: Boolean read FLockShowHint write FLockShowHint;
property Navigator: TcxCustomCellNavigator read FNavigator;
property WasFocusedBeforeClick: Boolean read FWasFocusedBeforeClick;
public
constructor Create(AOwner: TcxEditingControl); reintroduce; virtual;
destructor Destroy; override;
procedure Clear; virtual;
procedure ControlFocusChanged; virtual;
procedure DblClick; virtual;
function GetCursor(X, Y: Integer): TCursor; 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;
procedure Reset;
procedure WndProc(var Message: TMessage); virtual;
// drag'n'drop
procedure BeginDragAndDrop; virtual;
procedure DragAndDrop(const P: TPoint; var Accepted: Boolean); virtual;
procedure EndDragAndDrop(Accepted: Boolean); virtual;
function StartDragAndDrop(const P: TPoint): Boolean; virtual;
// scrolling
procedure InitScrollBarsParameters; virtual;
procedure Scroll(AScrollBarKind: TScrollBarKind; AScrollCode: TScrollCode;
var AScrollPos: Integer); virtual;
procedure SetFocusedRecordItem(ARecordIndex: Integer;
AItem: TcxCustomInplaceEditContainer); virtual;
procedure SetScrollBarInfo(AScrollBarKind: TScrollBarKind;
AMin, AMax, AStep, APage, APos: Integer; AAllowShow, AAllowHide: Boolean);
procedure MakeFocusedItemVisible; virtual;
procedure MakeFocusedRecordVisible; virtual;
property DataController: TcxCustomDataController read GetDataController;
property Focused: Boolean read GetFocused write SetFocused;
property FocusedItem: TcxCustomInplaceEditContainer read FFocusedItem write SetFocusedItem;
property FocusedRecordIndex: Integer read GetFocusedRecordIndex write SetFocusedRecordIndex;
property IsDblClick: Boolean read FIsDblClick;
property IsEditing: Boolean read GetIsEditing;
end;
{ TcxEditingController }
TcxEditingController = class
private
FController: TcxCustomControlController;
FEdit: TcxCustomEdit;
FEditHiding: Boolean;
FEditingItem: TcxCustomInplaceEditContainer;
FEditingItemSetting: Boolean;
FEditList: TcxInplaceEditList;
FEditPreparing: Boolean;
FEditShowingTimer: TcxTimer;
FEditShowingTimerItem: TcxCustomInplaceEditContainer;
FEditUpdateNeeded: Boolean;
FInitiatingEditing: Boolean;
FIsEditPlaced: Boolean;
FIsErrorOnEditExit: Boolean;
FPrevEditOnChange: TNotifyEvent;
FPrevEditOnEditValueChanged: TNotifyEvent;
function GetEditingControl: TcxEditingControl;
function GetEditingProperties: TcxCustomEditProperties;
function GetIsDragging: Boolean;
function GetIsEditing: Boolean;
procedure SetEditingItem(Value: TcxCustomInplaceEditContainer);
procedure EditShowingTimerHandler(Sender: TObject);
protected
procedure AfterViewInfoCalculate; virtual;
procedure BeforeViewInfoCalculate; virtual;
procedure CancelEditUpdatePost;
function CanRemoveEditFocus: Boolean; virtual;
function CanUpdateEditValue: Boolean; virtual;
procedure CheckEditUpdatePost;
procedure AssignEditEvents; virtual;
procedure UnassignEditEvents; virtual;
procedure DoUpdateEdit;
function GetHideEditOnExit: Boolean; virtual;
function GetHideEditOnFocusedRecordChange: Boolean; virtual;
procedure HideInplaceEditor;
procedure InitEdit; virtual;
function PrepareEdit(AItem: TcxCustomInplaceEditContainer; AIsMouseEvent: Boolean): Boolean; virtual;
procedure UpdateEdit;
procedure UpdateEditValue;
procedure UpdateValue;
procedure EditAfterKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); virtual;
procedure EditChanged(Sender: TObject); virtual;
procedure EditDblClick(Sender: TObject); virtual;
procedure EditEditing(Sender: TObject; var CanEdit: Boolean); virtual;
procedure EditEnter(Sender: TObject); virtual;
procedure EditExit(Sender: TObject); virtual;
procedure EditFocusChanged(Sender: TObject); virtual;
procedure EditKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); virtual;
procedure EditKeyPress(Sender: TObject; var Key: Char); virtual;
procedure EditKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); virtual;
procedure EditPostEditValue(Sender: TObject); virtual;
procedure EditValueChanged(Sender: TObject); virtual;
property Controller: TcxCustomControlController read FController;
property EditingControl: TcxEditingControl read GetEditingControl;
property EditHiding: Boolean read FEditHiding write FEditHiding;
property EditingProperties: TcxCustomEditProperties read GetEditingProperties;
property EditList: TcxInplaceEditList read FEditList;
property EditUpdateNeeded: Boolean read FEditUpdateNeeded;
property HideEditOnExit: Boolean read GetHideEditOnExit;
property HideEditOnFocusedRecordChange: Boolean read GetHideEditOnFocusedRecordChange;
property InitiatingEditing: Boolean read FInitiatingEditing;
property IsEditPlaced: Boolean read FIsEditPlaced;
property IsErrorOnEditExit: Boolean read FIsErrorOnEditExit write FIsErrorOnEditExit;
public
constructor Create(AController: TcxCustomControlController); virtual;
destructor Destroy; override;
procedure HideEdit(Accept: Boolean); virtual;
procedure PostEditUpdate;
procedure RemoveEdit(AProperties: TcxCustomEditProperties); virtual;
procedure ShowEdit(AItem: TcxCustomInplaceEditContainer = nil); overload;
procedure ShowEdit(AItem: TcxCustomInplaceEditContainer; Key: Char); overload;
procedure ShowEdit(AItem: TcxCustomInplaceEditContainer; Shift: TShiftState; X, Y: Integer); overload;
procedure StartEditShowingTimer(AItem: TcxCustomInplaceEditContainer);
procedure StopEditShowingTimer;
property Edit: TcxCustomEdit read FEdit;
property EditingItem: TcxCustomInplaceEditContainer read FEditingItem write SetEditingItem;
property IsDragging: Boolean read GetIsDragging;
property IsEditing: Boolean read GetIsEditing;
end;
{ TcxCustomControlViewInfo }
TcxCustomControlViewInfo = class
private
FControl: TcxEditingControl;
FClientRect: TRect;
FDefaultEditHeight: Integer;
FEditCellViewInfoList: TList;
FPainter: TcxCustomControlPainter;
FState: Integer;
function GetLookAndFeelPainter: TcxCustomLookAndFeelPainterClass;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?