cxinplacecontainer.pas
来自「胜天进销存源码,国产优秀的进销存」· PAS 代码 · 共 1,419 行 · 第 1/5 页
PAS
1,419 行
function GetState(AMask: Integer): Boolean;
procedure SetState(AMask: Integer; Value: Boolean);
procedure UpdateSelectionParams;
protected
Brush: TBrush;
SelectionBrush: TBrush;
SelectionParams: TcxViewParams;
function AddEditCellViewInfo(AViewInfoClass: TcxEditCellViewInfoClass;
AEditContainer: TcxCustomInplaceEditContainer): TcxEditCellViewInfo;
function CalculateDefaultEditHeight: Integer; virtual;
procedure CalculateDefaultHeights; virtual;
procedure ClearEditCellViewInfos;
procedure CreatePainter; virtual;
procedure DoCalculate; virtual;
procedure RemoveEditCellViewInfo(AViewInfo: TcxEditCellViewInfo);
procedure UpdateSelection; virtual;
property IsDirty: Boolean index cvis_IsDirty read GetState write SetState;
property State[AMask: Integer]: Boolean read GetState write SetState;
public
ViewParams: TcxViewParams;
constructor Create(AOwner: TcxEditingControl); virtual;
destructor Destroy; override;
procedure Calculate;
procedure Invalidate(ARecalculate: Boolean = False); virtual;
property ClientRect: TRect read FClientRect;
property Control: TcxEditingControl read FControl;
property DefaultEditHeight: Integer read FDefaultEditHeight;
property LookAndFeelPainter: TcxCustomLookAndFeelPainterClass read GetLookAndFeelPainter;
property Painter: TcxCustomControlPainter read FPainter write FPainter;
end;
TcxCustomControlViewInfoClass = class of TcxCustomControlViewInfo;
{ TcxCustomViewInfoItem }
TcxCustomViewInfoItem = class
private
FOwner: TObject;
function GetControlViewInfo: TcxCustomControlViewInfo;
function GetPainterClass: TcxCustomLookAndFeelPainterClass;
protected
ItemViewParams: TcxViewParams;
ItemVisible: Boolean;
ClipRect: TRect;
DisplayRect: TRect;
procedure CheckClipping(const ADisplayRect, AAvailableRect: TRect); overload; virtual;
procedure CheckClipping(const ADisplayRect: TRect); overload; virtual;
procedure DoCalculate; virtual;
procedure DoHorzOffset(AShift: Integer); virtual;
procedure DoVertOffset(AShift: Integer); virtual;
function GetControl: TcxEditingControl; virtual;
function IsTransparent: Boolean; virtual;
procedure UpdateEditRect;
property Owner: TObject read FOwner;
property ControlViewInfo: TcxCustomControlViewInfo read GetControlViewInfo;
public
constructor Create(AOwner: TObject); virtual;
procedure Assign(Source: TcxCustomViewInfoItem); virtual;
procedure Invalidate(ARecalculate: Boolean = False);
property BoundsRect: TRect read DisplayRect;
property Control: TcxEditingControl read GetControl;
property LookAndFeelPainterClass: TcxCustomLookAndFeelPainterClass read GetPainterClass;
property Visible: Boolean read ItemVisible;
property VisibleRect: TRect read ClipRect;
property ViewParams: TcxViewParams read ItemViewParams;
end;
{ TcxEditCellViewInfo }
TcxEditCellViewInfo = class(TcxCustomViewInfoItem, IUnknown, IcxHotTrackElement)
private
function GetTransparent: Boolean;
procedure SetTransparent(Value: Boolean);
protected
CellEditRect: TRect;
CellHeight: Integer;
CellValue: Variant;
CellContentRect: TRect;
CellBorders: TcxBorders;
IsViewDataCreated: Boolean;
Properties: TcxCustomEditProperties;
ViewInfo: TcxCustomEditViewInfo;
ViewData: TcxCustomEditViewData;
// IUnknown
function _AddRef: Integer; stdcall;
function _Release: Integer; stdcall;
// IcxHotTrackElement
function GetOrigin: TPoint;
function IsNeedHint(ACanvas: TcxCanvas; const P: TPoint;
out AText: TCaption;
out AIsMultiLine: Boolean;
out ATextRect: TRect; var IsNeedOffsetHint: Boolean): Boolean; virtual;
procedure UpdateHotTrackState(const APoint: TPoint); virtual;
function CalculateEditHeight: Integer;
function CalculateEditWidth: Integer;
function ChangedHeight(APrevHeight, ANewHeight: Integer): Boolean; virtual;
procedure CheckClipping(const ADisplayRect, AAvailableRect: TRect); override;
function ContentOffset: TRect; virtual;
procedure DoCalculate; override;
function GetButtonTransparency: TcxEditButtonTransparency; virtual;
function GetControl: TcxEditingControl; override;
function GetDisplayValue: Variant; virtual;
function GetEditContainer: TcxCustomInplaceEditContainer; virtual;
function GetEditViewParams: TcxViewParams; virtual;
function GetFocused: Boolean; virtual;
function GetInplaceEditPosition: TcxInplaceEditPosition;
function GetMaxLineCount: Integer; virtual;
function GetRecordIndex: Integer; virtual;
function GetSelectedTextColor: Integer; virtual;
function GetSelectedBKColor: Integer; virtual;
function GetViewInfoData: Pointer; virtual;
function IsAutoHeight: Boolean; virtual;
function IsEndEllipsis: Boolean; virtual;
function IsSupportedHotTrack: Boolean; virtual;
procedure SetBounds(const ABounds: TRect; const ADisplayRect: TRect);
property EditContainer: TcxCustomInplaceEditContainer read GetEditContainer;
property EditRect: TRect read CellEditRect;
public
destructor Destroy; override;
procedure Assign(Source: TcxCustomViewInfoItem); override;
// IUnknown
function QueryInterface(const IID: TGUID; out Obj): HResult; virtual; stdcall;
function Refresh(ARecalculate: Boolean): Boolean; virtual;
property Borders: TcxBorders read CellBorders;
property ContentRect: TRect read CellContentRect;
property DisplayValue: Variant read CellValue;
property EditViewInfo: TcxCustomEditViewInfo read ViewInfo;
property Focused: Boolean read GetFocused;
property MaxLineCount: Integer read GetMaxLineCount;
property RecordIndex: Integer read GetRecordIndex;
property Transparent: Boolean read GetTransparent write SetTransparent;
property BoundsRect;
property Control;
property ViewParams;
property VisibleRect;
end;
{ TcxCustomControlPainter }
TcxCustomDrawViewInfoItemEvent = procedure(Sender: TObject; Canvas: TcxCanvas;
AViewInfo: TcxCustomViewInfoItem; var ADone: Boolean) of object;
TcxCustomControlPainter = class
private
FSaveViewParams: TcxViewParams;
FBitmap: TBitmap;
FBitmapCanvas: TcxCanvas;
FBuffered: Boolean;
FControl: TcxEditingControl;
function GetPainter: TcxCustomLookAndFeelPainterClass;
function GetViewInfo: TcxCustomControlViewInfo;
procedure SetBuffered(Value: Boolean);
protected
FCanvas: TcxCanvas;
procedure AfterCustomDraw(AViewInfo: TcxCustomViewInfoItem); overload; virtual;
procedure BeforeCustomDraw(AViewInfo: TcxCustomViewInfoItem); overload; virtual;
function DoCustomDraw(AViewInfoItem: TcxCustomViewInfoItem;
AEvent: TcxCustomDrawViewInfoItemEvent): Boolean;
procedure DoPaintEditCell(ACellViewInfo: TcxEditCellViewInfo; AIsExcludeRect: Boolean = True); virtual;
procedure DoPaint; virtual;
public
constructor Create(AOwner: TcxEditingControl); virtual;
destructor Destroy; override;
procedure Paint;
property Buffered: Boolean read FBuffered write SetBuffered;
property Canvas: TcxCanvas read FCanvas;
property Control: TcxEditingControl read FControl;
property Painter: TcxCustomLookAndFeelPainterClass read GetPainter;
property ViewInfo: TcxCustomControlViewInfo read GetViewInfo;
end;
TcxCustomControlPainterClass = class of TcxCustomControlPainter;
{ TcxCustomControlStyles }
TcxCustomControlStylesClass = class of TcxCustomControlStyles;
TcxCustomControlStyles = class(TcxStyles)
private
FDefaultStyle: TcxStyle;
FOnGetContentStyle: TcxOnGetContentStyleEvent;
function GetControl: TcxEditingControl;
function GetPainter: TcxCustomLookAndFeelPainterClass;
protected
procedure Changed(AIndex: Integer); override;
function GetDefaultStyle(Index: Integer; AData: Pointer): TcxStyle;
procedure GetDefaultViewParams(Index: Integer; AData: TObject;
out AParams: TcxViewParams); override;
public
constructor Create(AOwner: TPersistent); override;
destructor Destroy; override;
procedure Assign(Source: TPersistent); override;
function GetBackgroundParams: TcxViewParams;
function GetSelectionParams: TcxViewParams;
property Control: TcxEditingControl read GetControl;
property LookAndFeelPainter: TcxCustomLookAndFeelPainterClass read GetPainter;
published
property Background: TcxStyle index ecs_Background read GetValue write SetValue;
property Content: TcxStyle index ecs_Content read GetValue write SetValue;
property Inactive: TcxStyle index ecs_Inactive read GetValue write SetValue;
property Selection: TcxStyle index ecs_Selection read GetValue write SetValue;
property OnGetContentStyle: TcxOnGetContentStyleEvent read FOnGetContentStyle write FOnGetContentStyle;
property StyleSheet;
end;
{ TcxEditingControl }
IcxEditingControlOptions = interface
['{6A041541-53E2-413B-8377-0D249356B5DF}']
function GetOptionsBehavior: TcxControlOptionsBehavior;
function GetOptionsData: TcxControlOptionsData;
function GetOptionsView: TcxControlOptionsView;
property OptionsBehavior: TcxControlOptionsBehavior read GetOptionsBehavior;
property OptionsData: TcxControlOptionsData read GetOptionsData;
property OptionsView: TcxControlOptionsView read GetOptionsView;
end;
TcxecEditingEvent = procedure(Sender, AItem: TObject; var Allow: Boolean) of object;
TcxecInitEditEvent = procedure(Sender, AItem: TObject; AEdit: TcxCustomEdit) of object;
TcxecItemEvent = procedure(Sender: TObject; AItem: TcxCustomInplaceEditContainer) of object;
TcxEditingControl = class(TcxControl, IcxMouseTrackingCaller)
private
FBrushCache: TcxBrushCache;
FChangesCount: Integer;
FContainerList: TList;
FDesignSelectionHelper: TcxCustomDesignSelectionHelper;
FDragHelper: TcxDragImageHelper;
FDragPos: TPoint;
FEditStyle: TcxCustomEditStyle;
FIsLayoutChanged: Boolean;
FStyles: TcxCustomControlStyles;
FViewInfo: TcxCustomControlViewInfo;
FOnCustomDrawCell: TcxCustomDrawViewInfoItemEvent;
FOnEditChanged: TcxecItemEvent;
FOnEdited: TcxecItemEvent;
FOnEditing: TcxecEditingEvent;
FOnEditValueChanged: TcxecItemEvent;
FOnInitEdit: TcxecInitEditEvent;
procedure IcxMouseTrackingCaller.MouseLeave = DoMouseLeave;
function GetBufferedPaint: Boolean;
function GetPainter: TcxCustomControlPainter;
procedure DoMouseLeave;
procedure SetBufferedPaint(Value: Boolean);
procedure SetEditStyle(Value: TcxCustomEditStyle);
procedure SetStyles(Value: TcxCustomControlStyles);
procedure WMCancelMode(var Message: TWMCancelMode); message WM_CANCELMODE;
procedure WMSetCursor(var Message: TWMSetCursor); message WM_SetCursor;
protected
FController: TcxCustomControlController;
FDataController: TcxCustomDataController;
FLockUpdate: Integer;
procedure AfterLayoutChanged; virtual;
procedure BeginAutoDrag; override;
procedure BeforeUpdate; virtual;
procedure CheckCreateDesignSelectionHelper; virtual;
procedure CreateSubClasses; virtual;
procedure ControlUpdateData(AInfo: TcxUpdateControlInfo); virtual;
procedure DataChanged; virtual;
procedure DataLayoutChanged; virtual;
procedure DestroyDesignSelectionHelper;
procedure DestroySubClasses; virtual;
procedure DoBeginUpdate; virtual;
procedure DoEndUpdate; virtual;
procedure DoEditChanged(AItem: TcxCustomInplaceEditContainer); virtual;
procedure DoEdited(AItem: TcxCustomInplaceEditContainer); virtual;
function DoEditing(AItem: TcxCustomInplaceEditContainer): Boolean; virtual;
procedure DoEditValueChanged(AItem: TcxCustomInplaceEditContainer); virtual;
procedure DoInitEdit(AItem: TcxCustomInplaceEditContainer; AEdit: TcxCustomEdit); virtual;
procedure DoInplaceEditContainerItemAdded(AItem: TcxCustomInplaceEditContainer); virtual;
procedure DoInplaceEditContainerItemRemoved(AItem: TcxCustomInplaceEditContainer); virtual;
procedure DoLayoutChanged; virtual;
//
function GetControllerClass: TcxCustomControlControllerClass; virtual; // TODO: need overriding
function GetControlStylesClass: TcxCustomControlStylesClass; virtual;
function GetDataControllerClass: TcxCustomDataControllerClass; virtual;
function GetDragImageHelperClass: TcxDragImageHelperClass; virtual;
function GetEditStyleClass: TcxCustomEditStyleClass; virtual;
function GetEditingControllerClass: TcxEditingControllerClass; virtual;
function GetHitTestControllerClass: TcxHitTestControllerClass; virtual;
function GetHotTrackControllerClass: TcxHotTr
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?