cxedit.pas

来自「胜天进销存源码,国产优秀的进销存」· PAS 代码 · 共 1,387 行 · 第 1/5 页

PAS
1,387
字号
    function GetOwner: TPersistent; override;
    function GetStoredValue: TcxEditValue; virtual;
    procedure Reset; virtual;
    procedure SetInternalDisplayValue(const Value: TcxEditValue);
    procedure SetDisplayValue(const Value: TcxEditValue); virtual;
    function SetEditMode: Boolean; virtual;
    procedure SetStoredValue(const Value: TcxEditValue); virtual;
    property Edit: TcxCustomEdit read FEdit;
  public
    constructor Create(AEdit: TcxCustomEdit); virtual;
    destructor Destroy; override;
    function CanCheckEditorValue: Boolean; virtual;
    function CanPostEditorValue: Boolean; virtual;
    function ExecuteAction(Action: TBasicAction): Boolean; virtual;
    class function GetDefaultValuesProviderClass: TcxCustomEditDefaultValuesProviderClass; virtual;
    procedure SetModified; virtual;
    function UpdateAction(Action: TBasicAction): Boolean; virtual;
    procedure UpdateDisplayValue; virtual;
    procedure UpdateNotConnectedDBEditDisplayValue; virtual;
    property DisplayValue: TcxEditValue read GetDisplayValue write SetDisplayValue;
    property Editing: Boolean read GetEditing;
    property IDefaultValuesProvider: IcxEditDefaultValuesProvider read GetIDefaultValuesProvider;
    property IsDataAvailable: Boolean read GetIsDataAvailable;
    property Modified: Boolean read GetModified;
    property StoredValue: TcxEditValue read GetStoredValue write SetStoredValue;
  end;

  TcxEditDataBindingClass = class of TcxEditDataBinding;

  { TcxCustomEdit }

  TcxEditModifiedState = record
    Modified: Boolean;
    ModifiedAfterEnter: Boolean;
  end;

  { TcxCustomEditData }

  TcxCustomEditData = class(TObject)
  private
    FCleared: Boolean;
    FEdit: TcxCustomEdit;
    FFreeNotificator: TcxFreeNotificator;
    procedure FreeNotification(AComponent: TComponent);
  protected
    property Cleared: Boolean read FCleared write FCleared;
  public
    constructor Create(AEdit: TcxCustomEdit); virtual;
    destructor Destroy; override;
    procedure Clear;
  end;

  TcxCustomEditDataClass = class of TcxCustomEditData;

  { TcxEditChangeEventsCatcher }

  TcxEditChangeEventsCatcher = class
  private
    FEdit: TcxCustomEdit;
    FLockCount: Integer;
    FOnChangeEvent: Boolean;
    FOnEditValueChangedEvent: Boolean;
  public
    property OnChangeEvent: Boolean read FOnChangeEvent write FOnChangeEvent;
    property OnEditValueChangedEvent: Boolean read FOnEditValueChangedEvent
      write FOnEditValueChangedEvent;
    constructor Create(AEdit: TcxCustomEdit);
    function IsLocked: Boolean;
    procedure Lock(ALock: Boolean; AInvokeChangedOnUnlock: Boolean = True);
  end;

  TcxCustomEdit = class(TcxContainer, IUnknown, IcxEditRepositoryItemListener,
    IdxSkinSupport, IdxSpellCheckerSupport)
  private
    FAutoSize: Boolean;
    FCaptureButtonVisibleIndex: Integer;
    FChangeEventsCatcher: TcxEditChangeEventsCatcher;
    FClickLockCount: Integer;
    FDblClickTimer: TcxTimer;
    FEditData: TcxCustomEditData;
    FEditModeSetting: Boolean;
    FEditValueChangingLockCount: Integer;
    FFocused: Boolean;
    FHandleAllocating: Boolean;
    FInnerEdit: IcxCustomInnerEdit;
    FInnerEditDefWindowProc: Pointer;
    FIsFirstAutoWidth: Boolean;
    FIsBarControl: Boolean;
    FIsContentParamsInitialized: Boolean;
    FIsEditValidated: Boolean;
    FIsEditValidating: Boolean;
    FIsEditValueResetting: Boolean;
    FIsEscapeDown: Boolean;
    FIsJustCreated: Boolean;
    FIsInplace: Boolean;
    FIsPosting: Boolean;
    FKeyboardAction: Boolean;
    FLockValidate: Integer;
    FModified: Boolean;
    FModifiedAfterEnter: Boolean;
    FObjectInstance: Pointer;
    FPrevEditValue: TcxEditValue;
    FPrevModifiedList: array of TcxEditModifiedState;
    FPropertiesEvents: TNotifyEvent;
    FRepositoryItem: TcxEditRepositoryItem;
    FTransparent: Boolean;
    FUpdate: Boolean;
    FValidateErrorProcessing: Boolean;
    FOnAfterKeyDown: TKeyEvent;
    FOnEditing: TcxEditEditingEvent;
    FOnPostEditValue: TNotifyEvent;

    function CheckButtonShortCuts(AKey: Integer): Boolean;
    procedure DblClickTimerHandler(Sender: TObject);
    procedure DoClearEditData(AEditData: TcxCustomEditData);
    function GetActiveProperties: TcxCustomEditProperties;
    function GetEditActiveStyle: TcxCustomEditStyle;
    function GetHeight: Integer;
    function GetInternalStyle(AState: TcxContainerStateItem): TcxCustomEditStyle;
    function GetStyle: TcxEditStyle;
    function GetStyleDisabled: TcxEditStyle;
    function GetStyleFocused: TcxEditStyle;
    function GetStyleHot: TcxEditStyle;
    function GetViewInfo: TcxCustomEditViewInfo;
    procedure InitContentParams;
    procedure InternalCanResize(var ANewWidth, ANewHeight: Integer);
    function IsAutoWidth: Boolean;
    procedure ReadHeight(Reader: TReader);
    procedure ReadWidth(Reader: TReader);
    procedure SetDataBinding(Value: TcxEditDataBinding);
    procedure SetHeight(Value: Integer);
    procedure SetInternalStyle(AState: TcxContainerStateItem;
      Value: TcxCustomEditStyle);
    procedure SetModified(Value: Boolean);
    procedure SetModifiedAfterEnter(Value: Boolean);
    procedure SetModifiedAfterEnterValue(Value: Boolean);
    procedure SetProperties(Value: TcxCustomEditProperties);
    procedure SetRepositoryItem(Value: TcxEditRepositoryItem);
    procedure SetReplicatableFlag;
    procedure SetStyle(Value: TcxEditStyle);
    procedure SetStyleDisabled(Value: TcxEditStyle);
    procedure SetStyleFocused(Value: TcxEditStyle);
    procedure SetStyleHot(Value: TcxEditStyle);
    procedure SetTransparent(Value: Boolean);
    procedure WriteHeight(Writer: TWriter);
    procedure WriteWidth(Writer: TWriter);

    function GetHintText(APart: Integer): string;

    procedure WMCopy(var Message: TMessage); message WM_COPY;
    procedure WMCut(var Message: TMessage); message WM_CUT;
    procedure CMHintShow(var Message: TCMHintShow); message CM_HINTSHOW;
    procedure WMPaste(var Message: TMessage); message WM_PASTE;
    procedure CMDialogChar(var Message: TCMDialogChar); message CM_DIALOGCHAR;
    procedure CMShowingChanged(var Message: TMessage); message CM_SHOWINGCHANGED;
  protected
    FDataBinding: TcxEditDataBinding;
    FEditValue: TcxEditValue;
    FProperties: TcxCustomEditProperties;
    FSettingEditWindowRegion: Boolean;
    function CanContainerHandleTabs: Boolean; override;
    function CanResize(var NewWidth, NewHeight: Integer): Boolean; override;
    procedure Click; override;
    procedure DblClick; override;
    procedure DefineProperties(Filer: TFiler); override;
    procedure DoEnter; override;
    procedure DoExit; override;
    procedure FocusChanged; override;
    function GetBorderExtent: TRect; override;
    function GetStyleClass: TcxContainerStyleClass; override;
    function GetViewInfoClass: TcxContainerViewInfoClass; override;
    function InternalGetNotPublishedStyleValues: TcxEditStyleValues; override;
    function IsRightBoundFixed: Boolean; virtual;
    function IsTransparentBackground: Boolean; override;
    procedure KeyDown(var Key: Word; Shift: TShiftState); override;
    procedure KeyPress(var Key: Char); override;
    procedure KeyUp(var Key: Word; Shift: TShiftState); override;
    procedure Loaded; override;
    procedure MouseDown(Button: TMouseButton; Shift: TShiftState;
      X, Y: Integer); override;
    procedure MouseLeave(AControl: TControl); override;
    procedure Notification(AComponent: TComponent; Operation: TOperation); override;
    procedure Paint; override;
    procedure ReadState(Reader: TReader); override;
    function RefreshContainer(const P: TPoint; Button: TcxMouseButton; Shift: TShiftState;
      AIsMouseEvent: Boolean): Boolean; override;
    procedure RequestAlign; override;
    procedure SetName(const Value: TComponentName); override;
    procedure SetParent(AParent: TWinControl); override;
    procedure SetSize; override;
    procedure CreateHandle; override;
    function IsNativeStyle: Boolean; override;
    procedure SafeSelectionFocusInnerControl; override;
    procedure WndProc(var Message: TMessage); override;
    procedure AdjustInnerEditPosition; virtual;
    procedure AfterPosting; virtual;
    procedure BeforePosting; virtual;
    function ButtonVisibleIndexAt(const P: TPoint): Integer;
    procedure CalculateViewInfo(AIsMouseEvent: Boolean); reintroduce; overload;
    procedure CalculateViewInfo(P: TPoint; Button: TcxMouseButton;
      Shift: TShiftState; AIsMouseEvent: Boolean); reintroduce; overload;
    function CanAutoSize: Boolean; reintroduce; virtual;
    function CanAutoWidth: Boolean; virtual;
    function CanKeyDownModifyEdit(Key: Word; Shift: TShiftState): Boolean; virtual;
    function CanKeyPressModifyEdit(Key: Char): Boolean; virtual;
    function CanModify: Boolean; virtual;
    procedure ChangeHandler(Sender: TObject); virtual;
    procedure CheckHandle;
    function CreateInnerEdit: IcxCustomInnerEdit; virtual;
    function CreateViewData: TcxCustomEditViewData; virtual;
    procedure DefaultButtonClick; virtual;
    procedure DisableValidate;
    procedure DoAfterKeyDown(var Key: Word; Shift: TShiftState);
    procedure DoButtonClick(AButtonVisibleIndex: Integer); virtual;
    procedure DoButtonDown(AButtonVisibleIndex: Integer); virtual;
    procedure DoButtonUp(AButtonVisibleIndex: Integer); virtual;
    procedure DoChange; virtual;
    procedure DoClick;
    procedure DoClosePopup(AReason: TcxEditCloseUpReason);
    procedure DoEditValueChanged;
    procedure DoEditKeyDown(var Key: Word; Shift: TShiftState); virtual;
    procedure DoEditKeyPress(var Key: Char); virtual;
    procedure DoEditKeyUp(var Key: Word; Shift: TShiftState); virtual;
    procedure DoEditProcessTab(Shift: TShiftState); virtual;
    procedure DoFocusChanged; virtual;
    procedure DoHideEdit(AExit: Boolean);
    procedure DoOnValidate(var ADisplayValue: TcxEditValue;
      var AErrorText: TCaption; var AError: Boolean);
    procedure DoOnChange; virtual;
    procedure DoOnEditValueChanged; virtual;
    procedure DoPostEditValue;
    procedure DoShowEdit; virtual;
    procedure EditingChanged; virtual;
    procedure EnableValidate;
    procedure FillSizeProperties(var AEditSizeProperties: TcxEditSizeProperties); virtual;
    function GetClearValue: TcxEditValue; virtual;
    class function GetDataBindingClass: TcxEditDataBindingClass; reintroduce; virtual;
    function GetDefaultButtonVisibleIndex: Integer;
    function GetDisplayValue: string; virtual;
    function GetEditDataClass: TcxCustomEditDataClass; virtual;
    function GetEditingValue: TcxEditValue; virtual;
    function GetEditValue: TcxEditValue; virtual;
    function GetInnerEditClass: TControlClass; virtual;
    function HandleMouseWheel(Shift: TShiftState): Boolean;
    procedure HandleValidationError(const AErrorText: string;
      ACanAbortExecution: Boolean); virtual;
    function HasInnerEdit: Boolean;
    procedure Initialize; virtual;
    procedure InitializeEditData; virtual;
    procedure InitializeInnerEdit; virtual;
    procedure InitializeViewData(AViewData: TcxCustomEditViewData); virtual;
    function InternalDoEditing: Boolean; virtual;
    function InternalGetActiveProperties: TcxCustomEditProperties;
    function InternalGetEditingValue: TcxEditValue; virtual;
    procedure InternalPostEditValue(AValidateEdit: Boolean = False);
    procedure InternalPostValue;
    procedure InternalSetDisplayValue(const Value: TcxEditValue); virtual;
    procedure InternalSetEditValue(const Value: TcxEditValue;
      AValidateEditValue: Boolean); virtual;
    procedure InternalValidateDisplayValue(const ADisplayValue: TcxEditValue); virtual;
    function IsActiveControl: Boolean; virtual;
    function IsButtonDC(ADC: THandle): Boolean; virtual;
    function IsClickEnabledDuringLoading: Boolean; virtual;
    function IsDBEdit: Boolean;
    function IsDBEditPaintCopyDrawing: Boolean; virtual;
    function IsEditorKey(Key: Word; Shift: TShiftState): Boolean; virtual;
    function IsEditValueStored: Boolean; virtual;
    function IsNativeBackground: Boolean; virtual;
    function IsOnChangeEventAssigned: Boolean;
    function IsOnEditValueChangedEventAssigned: Boolean;
    function IsOnValidateEventAssigned: Boolean;
    function IsResetEditClass: Boolean;
    function IsSpecialKey(Key: Word; Shift: TShiftState): Boolean;
    function IsTransparent: Boolean; virtual;
    function IsValidChar(AChar: 

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?