cxedit.pas
来自「胜天进销存源码,国产优秀的进销存」· PAS 代码 · 共 1,387 行 · 第 1/5 页
PAS
1,387 行
TcxEditSizeProperties = record
Height: Integer;
MaxLineCount: Integer;
Width: Integer;
end;
PcxEditSizeProperties = ^TcxEditSizeProperties;
TcxEditContentOption = (ecoShowFocusRectWhenInplace, ecoOffsetButtonContent);
TcxEditContentOptions = set of TcxEditContentOption;
TcxEditContentParams = record
ExternalBorderBounds: TRect;
Offsets: TRect;
Options: TcxEditContentOptions;
SizeCorrection: TSize;
end;
TcxCustomEditViewData = class;
TcxEditGetDefaultButtonWidthEvent = procedure(Sender: TcxCustomEditViewData;
AIndex: Integer; var ADefaultWidth: Integer) of object;
TcxEditViewDataGetDisplayTextEvent = procedure(Sender: TcxCustomEditViewData;
var AText: string) of object;
TcxCustomEditViewData = class(TPersistent)
private
FData: TObject; // internal for OnGetDisplayText event
FIsInplace: Boolean;
FLeftSideLeftmostButtonIndex, FLeftSideRightmostButtonIndex: Integer;
FRightSideLeftmostButtonIndex, FRightSideRightmostButtonIndex: Integer;
FOnGetDefaultButtonWidth: TcxEditGetDefaultButtonWidthEvent;
FOnGetDisplayText: TcxEditViewDataGetDisplayTextEvent;
procedure DoGetButtonState(AViewInfo: TcxCustomEditViewInfo;
AButtonVisibleIndex: Integer; var AState: TcxEditButtonState);
function DoGetDefaultButtonWidth(AIndex: Integer): Integer;
function GetPaintOptions: TcxEditPaintOptions;
function GetStyle: TcxCustomEditStyle;
procedure SetStyle(Value: TcxCustomEditStyle);
protected
FEdit: TcxCustomEdit;
FProperties: TcxCustomEditProperties;
FStyle: TcxCustomEditStyle;
procedure CalculateButtonNativeInfo(AButtonViewInfo: TcxEditButtonViewInfo); virtual;
procedure CalculateViewInfo(AViewInfo: TcxCustomEditViewInfo; AIsMouseEvent: Boolean);
function CanPressButton(AViewInfo: TcxCustomEditViewInfo; AButtonVisibleIndex: Integer):
Boolean; virtual;
procedure CheckSizeConstraints(var AEditSize: TSize);
procedure CorrectBorderStyle(var ABorderStyle: TcxEditBorderStyle);
procedure DoOnGetDisplayText(var AText: string);
function EditValueToDisplayText(AEditValue: TcxEditValue): string;
function GetButtonsStyle: TcxEditButtonStyle;
function GetCaptureButtonVisibleIndex: Integer;
procedure GetColorSettings(AViewInfo: TcxCustomEditViewInfo; var FillColor, TextColor: TColor);
function GetContainerState(const ABounds: TRect; const P: TPoint;
Button: TcxMouseButton; Shift: TShiftState;
AIsMouseEvent: Boolean): TcxContainerState; virtual;
function GetEditContentDefaultOffsets: TRect; virtual;
function GetEditNativeState(AViewInfo: TcxCustomEditViewInfo): Integer; virtual;
function HasThickBorders: Boolean; virtual;
procedure InitCacheData; virtual;
procedure InitEditContentParams(var AParams: TcxEditContentParams); virtual;
procedure Initialize; virtual;
function InternalEditValueToDisplayText(AEditValue: TcxEditValue): string; virtual;
function InternalFocused: Boolean;
function InternalGetEditConstantPartSize(ACanvas: TcxCanvas; AIsInplace: Boolean;
AEditSizeProperties: TcxEditSizeProperties; var MinContentSize: TSize;
AViewInfo: TcxCustomEditViewInfo): TSize; virtual;
function InternalGetEditContentSize(ACanvas: TcxCanvas; const AEditValue: TcxEditValue;
const AEditSizeProperties: TcxEditSizeProperties): TSize; virtual;
function IsButtonPressed(AViewInfo: TcxCustomEditViewInfo;
AButtonVisibleIndex: Integer): Boolean; virtual;
public
AutoHeight: Boolean;
Bounds: TRect;
ButtonsOnlyStyle: Boolean;
ButtonVisibleCount: Integer;
ContainerState: TcxContainerState;
ContentOffset: TRect;
EditContentParams: TcxEditContentParams;
Enabled: Boolean;
Focused: Boolean;
HorzAlignment: TcxEditHorzAlignment;
HScrollBar: TcxControlScrollBar;
InnerEdit: IcxCustomInnerEdit;
InplaceEditParams: TcxInplaceEditParams;
IsDesigning: Boolean;
IsSelected: Boolean; // Row selected
IsValueSource: Boolean;
MaxLineCount: Integer;
NativeStyle: Boolean;
PaintOptions: TcxEditPaintOptions;
PreviewMode: Boolean;
Selected: Boolean;
SelStart, SelLength: Integer;
SelTextColor, SelBackgroundColor: TColor;
VertAlignment: TcxEditVertAlignment;
VScrollBar: TcxControlScrollBar;
WindowHandle: HWND;
constructor Create(AProperties: TcxCustomEditProperties; AStyle: TcxCustomEditStyle;
AIsInplace: Boolean); reintroduce; virtual;
procedure Calculate(ACanvas: TcxCanvas; const ABounds: TRect; const P: TPoint;
Button: TcxMouseButton; Shift: TShiftState; AViewInfo: TcxCustomEditViewInfo;
AIsMouseEvent: Boolean); virtual;
procedure CalculateButtonBounds(ACanvas: TcxCanvas; AViewInfo: TcxCustomEditViewInfo;
AButtonVisibleIndex: Integer; var ButtonsRect: TRect); virtual;
procedure CalculateButtonsViewInfo(ACanvas: TcxCanvas; const ABounds: TRect; const P: TPoint;
Button: TcxMouseButton; Shift: TShiftState; AViewInfo: TcxCustomEditViewInfo;
AIsMouseEvent: Boolean); virtual;
procedure CalculateButtonViewInfo(ACanvas: TcxCanvas; AViewInfo: TcxCustomEditViewInfo;
AButtonVisibleIndex: Integer; var ButtonsRect: TRect); virtual;
procedure CalculateEx(ACanvas: TcxCanvas; const ABounds: TRect; const P: TPoint;
Button: TcxMouseButton; Shift: TShiftState; AViewInfo: TcxCustomEditViewInfo;
AIsMouseEvent: Boolean);
procedure CheckButtonsOnly(AViewInfo: TcxCustomEditViewInfo;
APrevButtonsWidth, AButtonsWidth: Integer); virtual;
procedure EditValueToDrawValue(ACanvas: TcxCanvas; const AEditValue: TcxEditValue;
AViewInfo: TcxCustomEditViewInfo); virtual;
function GetBorderColor: TColor; virtual;
function GetBorderExtent: TRect; virtual;
function GetBorderExtentByEdges(ABorderWidth: Integer): TRect; virtual;
function GetBorderExtentByPainter: TRect; virtual;
function GetBorderStyle: TcxEditBorderStyle; virtual;
function GetButtonsExtent(ACanvas: TcxCanvas): TRect; virtual;
function GetClientExtent(ACanvas: TcxCanvas;
AViewInfo: TcxCustomEditViewInfo): TRect; virtual;
function GetEditConstantPartSize(ACanvas: TcxCanvas;
const AEditSizeProperties: TcxEditSizeProperties; var MinContentSize: TSize;
AViewInfo: TcxCustomEditViewInfo = nil): TSize; virtual;
function GetEditContentSize(ACanvas: TcxCanvas; const AEditValue: TcxEditValue;
const AEditSizeProperties: TcxEditSizeProperties): TSize; virtual;
function GetEditContentSizeCorrection: TSize; virtual;
function GetEditSize(ACanvas: TcxCanvas; const AEditValue: TcxEditValue;
AEditSizeProperties: TcxEditSizeProperties;
AViewInfo: TcxCustomEditViewInfo = nil): TSize;
function HasShadow: Boolean; virtual;
function IgnoreButtonWhileStretching(
AButtonVisibleIndex: Integer): Boolean; virtual;
class function IsNativeStyle(ALookAndFeel: TcxLookAndFeel): Boolean; virtual;
property Data: TObject read FData write FData;
property Edit: TcxCustomEdit read FEdit write FEdit;
property IsInplace: Boolean read FIsInplace;
property Properties: TcxCustomEditProperties read FProperties;
property Style: TcxCustomEditStyle read GetStyle write SetStyle;
property OnGetDefaultButtonWidth: TcxEditGetDefaultButtonWidthEvent
read FOnGetDefaultButtonWidth write FOnGetDefaultButtonWidth;
property OnGetDisplayText: TcxEditViewDataGetDisplayTextEvent
read FOnGetDisplayText write FOnGetDisplayText;
end;
TcxCustomEditViewDataClass = class of TcxCustomEditViewData;
{ TcxEditStyleController }
TcxEditStyle = class;
TcxEditStyleController = class(TcxStyleController)
private
function GetInternalStyle(AState: TcxContainerStateItem): TcxCustomEditStyle;
function GetStyle: TcxEditStyle;
function GetStyleDisabled: TcxEditStyle;
function GetStyleFocused: TcxEditStyle;
function GetStyleHot: TcxEditStyle;
procedure SetInternalStyle(AState: TcxContainerStateItem; Value: TcxCustomEditStyle);
procedure SetStyle(Value: TcxEditStyle);
procedure SetStyleDisabled(Value: TcxEditStyle);
procedure SetStyleFocused(Value: TcxEditStyle);
procedure SetStyleHot(Value: TcxEditStyle);
protected
function GetStyleClass: TcxContainerStyleClass; override;
public
property Styles[AState: TcxContainerStateItem]: TcxCustomEditStyle
read GetInternalStyle write SetInternalStyle;
published
property Style: TcxEditStyle read GetStyle write SetStyle;
property StyleDisabled: TcxEditStyle read GetStyleDisabled
write SetStyleDisabled;
property StyleFocused: TcxEditStyle read GetStyleFocused
write SetStyleFocused;
property StyleHot: TcxEditStyle read GetStyleHot write SetStyleHot;
property OnStyleChanged;
end;
{ TcxCustomEditStyle }
TcxCustomEditStyle = class(TcxContainerStyle)
private
FButtonStyle: TcxEditButtonStyle;
FButtonTransparency: TcxEditButtonTransparency;
FGradient: Boolean;
FGradientButtons: Boolean;
FGradientDirection: TcxEditGradientDirection;
FPopupBorderStyle: TcxEditPopupBorderStyle;
FPopupCloseButton: Boolean;
function GetActiveStyleController: TcxEditStyleController;
function GetAssignedValues: TcxEditStyleValues;
function GetBaseStyle: TcxCustomEditStyle;
function GetBorderStyle: TcxEditBorderStyle;
function GetButtonStyle: TcxEditButtonStyle;
function GetButtonTransparency: TcxEditButtonTransparency;
function GetEdit: TcxCustomEdit;
function GetGradient: Boolean;
function GetGradientButtons: Boolean;
function GetGradientDirection: TcxEditGradientDirection;
function GetPopupBorderStyle: TcxEditPopupBorderStyle;
function GetPopupCloseButton: Boolean;
function GetStyleController: TcxEditStyleController;
function InternalGetButtonStyle(var ButtonStyle: TcxEditButtonStyle): Boolean;
function InternalGetButtonTransparency(var ButtonTransparency: TcxEditButtonTransparency): Boolean;
function InternalGetGradient(var Gradient: Boolean): Boolean;
function InternalGetGradientButtons(var GradientButtons: Boolean): Boolean;
function InternalGetGradientDirection(var GradientDirection: TcxEditGradientDirection): Boolean;
function InternalGetPopupBorderStyle(var PopupBorderStyle: TcxEditPopupBorderStyle): Boolean;
function IsBorderStyleStored: Boolean;
function IsButtonStyleStored: Boolean;
function IsButtonTransparencyStored: Boolean;
function IsGradientStored: Boolean;
function IsGradientButtonsStored: Boolean;
function IsGradientDirectionStored: Boolean;
function IsPopupBorderStyleStored: Boolean;
function IsStyleControllerStored: Boolean;
procedure SetAssignedValues(Value: TcxEditStyleValues);
procedure SetBorderStyle(Value: TcxEditBorderStyle);
procedure SetButtonStyle(Value: TcxEditButtonStyle);
procedure SetButtonTransparency(Value: TcxEditButtonTransparency);
procedure SetGradient(Value: Boolean);
procedure SetGradientButtons(Value: Boolean);
procedure SetGradientDirection(Value: TcxEditGradientDirection);
procedure SetPopupBorderStyle(Value: TcxEditPopupBorderStyle);
procedure SetPopupCloseButton(Value: Boolean);
procedure SetStyleController(Value: TcxEditStyleController);
protected
function GetDefaultStyleController: TcxStyleController; override;
function InternalGetNotPublishedExtendedStyleValues: TcxEditStyleValues; override;
function DefaultButtonStyle: TcxEditButtonStyle; virtual;
function DefaultButtonTransparency: TcxEditButtonTransparency; virtual;
function DefaultGradient: Boolean; virtual;
function DefaultGradientButtons: Boolean; virtual;
function DefaultGradientDirection: TcxEditGradientDirection; virtual;
function DefaultPopupBorderStyle: TcxEditPopupBorderStyle; virtual;
property PopupCloseButton: Boolean read GetPopupCloseButton
write SetPopupCloseButton default True;
public
constructor Create(AOwner: TPersistent; ADirectAccessMode: Boolean;
AParentStyle: TcxContainerStyle = nil;
AState: TcxContainerStateItem = csNormal); override;
procedure Assign(Source: TPersistent); override;
function GetStyleValueCount: Integer; override;
function GetStyleValueName(AStyleValue: TcxEditStyleValue;
out StyleValueName: string): Boolean; override;
function IsValueAssigned(AValue: TcxEditStyleValue): Boolean; override;
procedure Init(AParams: TcxViewParams);
property ActiveStyleController: TcxEditStyleController
read GetActiveStyleController;
property AssignedValues: TcxEditStyleValues read GetAssignedValues
write SetAssignedValues stored False;
property BaseStyle: TcxCustomEditStyle read GetBaseStyle;
property BorderStyle: TcxEditBorderStyle read GetBorderStyle
write SetBorderStyle stored IsBorderStyleStored;
property ButtonStyle: TcxEditButtonStyle read GetButtonStyle
write SetButtonStyle stored IsButtonStyleStored;
property ButtonTransparency: TcxEditButtonTransparency read GetButtonTransparency
write SetButtonTransparency stored IsButtonTransparencyStored;
property Edit: TcxCustomEdit read GetEdit;
property Gradient: Boolean read GetGradient write SetGradient
stored IsGradientStored;
property GradientButtons: Boolean read GetGradientButtons
write SetGradientButtons stored IsGradientButtonsStored;
property GradientDirection: TcxEditGradientDirection read GetGradientDirection
write SetGradientDirection stored IsGradientDirectionStored;
property PopupBorderStyle: TcxEditPopupBorderStyle read GetPopupBorderStyle
write SetPopupBorderStyle stored IsPopupBorderStyleStored;
property StyleController: TcxEditStyleController read GetStyleController
write SetStyleController stored IsStyleControllerStored;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?