cxedit.pas

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

PAS
1,387
字号
  end;

  TcxCustomEditStyleClass = class of TcxCustomEditStyle;

  { TcxEditStyle }

  TcxEditStyle = class(TcxCustomEditStyle)
  published
    property AssignedValues;
    property BorderColor;
    property BorderStyle;
    property ButtonStyle;
    property ButtonTransparency;
    property Color;
    property Edges;
    property Font;
    property Gradient;
//    property GradientButtons;
    property GradientDirection;
    property HotTrack;
    property LookAndFeel;
    property PopupBorderStyle;
    property Shadow;
    property StyleController;
    property TextColor;
    property TextStyle;
    property TransparentBorder;
  end;

  { TcxCustomEditPropertiesValues }

  TcxCustomEditPropertiesValues = class(TPersistent)
  private
    FOwner: TPersistent;
    FMaxValue: Boolean;
    FMinValue: Boolean;
    FReadOnly: Boolean;
    function GetProperties: TcxCustomEditProperties;
    procedure SetMaxValue(Value: Boolean);
    procedure SetMinValue(Value: Boolean);
    procedure SetReadOnly(Value: Boolean);
  protected
    function GetOwner: TPersistent; override;
    procedure Changed;
    function IsMaxValueStored: Boolean;
    function IsMinValueStored: Boolean;
    function IsPropertiesPropertyVisible(const APropertyName: string): Boolean;
    property MaxValue: Boolean read FMaxValue write SetMaxValue
      stored IsMaxValueStored;
    property MinValue: Boolean read FMinValue write SetMinValue
      stored IsMinValueStored;
    property Properties: TcxCustomEditProperties read GetProperties;
  public
    constructor Create(AOwner: TPersistent); virtual;
    procedure Assign(Source: TPersistent); override;
    procedure BeginUpdate;
    procedure EndUpdate;
    procedure RestoreDefaults; virtual;
  published
    property ReadOnly: Boolean read FReadOnly write SetReadOnly stored False;
  end;

  TcxCustomEditPropertiesValuesClass = class of TcxCustomEditPropertiesValues;

  { TcxCustomEditDefaultValuesProvider }

  TcxCustomEditDefaultValuesProvider = class(TcxInterfacedPersistent,
    IUnknown, IcxEditDefaultValuesProvider)
  public
    destructor Destroy; override;
    function CanSetEditMode: Boolean; virtual;
    procedure ClearUsers;
    function DefaultAlignment: TAlignment; virtual;
    function DefaultBlobKind: TcxBlobKind; virtual;
    function DefaultCanModify: Boolean; virtual;
    function DefaultDisplayFormat: string; virtual;
    function DefaultEditFormat: string; virtual;
    function DefaultEditMask: string; virtual;
    function DefaultIsFloatValue: Boolean; virtual;
    function DefaultMaxLength: Integer; virtual;
    function DefaultMaxValue: Double; virtual;
    function DefaultMinValue: Double; virtual;
    function DefaultPrecision: Integer; virtual;
    function DefaultReadOnly: Boolean; virtual;
    function DefaultRequired: Boolean; virtual;
    function GetInstance: TObject;
    function IsBlob: Boolean; virtual;
    function IsCurrency: Boolean; virtual;
    function IsDataAvailable: Boolean; virtual;
    function IsDataStorage: Boolean; virtual;
    function IsDisplayFormatDefined(AIsCurrencyValueAccepted: Boolean): Boolean; virtual;
    function IsOnGetTextAssigned: Boolean; virtual;
    function IsOnSetTextAssigned: Boolean; virtual;
    function IsValidChar(AChar: Char): Boolean; virtual;
  end;

  TcxCustomEditDefaultValuesProviderClass = class of TcxCustomEditDefaultValuesProvider;

  { TcxCustomEditProperties }

  TcxEditButtonClickEvent = procedure (Sender: TObject; AButtonIndex: Integer) of object;
  TcxEditEditingEvent = procedure(Sender: TObject; var CanEdit: Boolean) of object;
  TcxEditCloseUpReason = (crUnknown, crTab, crClose, crCancel, crEnter);
  TcxEditClosePopupEvent = procedure(Sender: TcxControl; AReason: TcxEditCloseUpReason) of object;

  TcxCustomEditProperties = class(TcxInterfacedPersistent)
  private
    FAutoSelect: Boolean;
    FBeepOnError: Boolean;
    FButtons: TcxEditButtons;
    FButtonsViewStyle: TcxEditButtonsViewStyle;
    FChangedOccurred: Boolean;
    FClearKey: TShortCut;
    FClickKey: TShortCut;
    FFreeNotificator: TcxFreeNotificator;
    FImmediatePost: Boolean;
    FInnerAlignment: TcxEditAlignment;
    FIsChangingCount: Integer;
    FMaxValue: Double;
    FMinValue: Double;
    FReadOnly: Boolean;
    FTransparent: Boolean;
    FUpdateCount: Integer;
    FUseLeftAlignmentOnEditing: Boolean;
    FUseMouseWheel: Boolean;
    FValidateOnEnter: Boolean;
    FOnButtonClick: TcxEditButtonClickEvent;
    FOnChange: TNotifyEvent;
    FOnClosePopup: TcxEditClosePopupEvent;
    FOnEditValueChanged: TNotifyEvent;
    FOnValidate: TcxEditValidateEvent;
    FOnPropertiesChanged: TNotifyEvent;
    function BaseGetAlignment: TcxEditAlignment;
    procedure DefaultValuesChanged(Sender: TObject);
    function GetIsChanging: Boolean;
    function GetReadOnly: Boolean;
    function IsAlignmentStored: Boolean;
    function IsUseLeftAlignmentOnEditingStored: Boolean;
    function IsReadOnlyStored: Boolean;
    procedure SetAssignedValues(Value: TcxCustomEditPropertiesValues);
    procedure SetAutoSelect(Value: Boolean);
    procedure SetButtons(Value: TcxEditButtons);
    procedure SetButtonsViewStyle(Value: TcxEditButtonsViewStyle);
    procedure SetUseLeftAlignmentOnEditing(Value: Boolean);
    procedure SetIDefaultValuesProvider(Value: IcxEditDefaultValuesProvider);
    procedure SetMaxValue(Value: Double);
    procedure SetMinValue(Value: Double);
    procedure SetReadOnly(Value: Boolean);
    procedure SetTransparent(Value: Boolean);
  protected
    FAlignment: TcxEditAlignment;
    FAssignedValues: TcxCustomEditPropertiesValues;
    FChangedLocked: Boolean;
    FIDefaultValuesProvider: IcxEditDefaultValuesProvider;
    FOwner: TPersistent;
    procedure AlignmentChangedHandler(Sender: TObject); virtual;
    procedure BaseSetAlignment(Value: TcxEditAlignment); virtual;
    procedure ButtonsChanged(Sender: TObject); virtual;
    function CanModify: Boolean;
    function CanValidate: Boolean; virtual;
    function DefaultUseLeftAlignmentOnEditing: Boolean; virtual;
    procedure DefaultValuesProviderDestroyed; virtual;
    procedure DoValidate(var ADisplayValue: TcxEditValue;
      var AErrorText: TCaption; var AError: Boolean; AEdit: TcxCustomEdit;
      out AIsUserErrorDisplayValue: Boolean);
    procedure FillMinMaxValues(AMinValue, AMaxValue: Double);
    procedure FreeNotification(Sender: TComponent); virtual;
    class function GetAssignedValuesClass: TcxCustomEditPropertiesValuesClass; virtual;
    function GetDefaultHorzAlignment: TAlignment; virtual;
    function GetDisplayFormatOptions: TcxEditDisplayFormatOptions; virtual;
    function GetMaxValue: Double; virtual;
    function GetMinValue: Double; virtual;
    function GetValidateErrorText(AErrorKind: TcxEditErrorKind): string; virtual;
    function GetValueEditorEditValueSource(AEditFocused: Boolean): TcxDataEditValueSource; virtual;
    class function GetViewDataClass: TcxCustomEditViewDataClass; virtual;
    function HasDisplayValue: Boolean; virtual;
    function InnerEditNeedsTabs: Boolean; virtual;
    function IsEditValueConversionDependOnFocused: Boolean; virtual;
    function IsMaxValueStored: Boolean;
    function IsMinValueStored: Boolean;
    property AssignedValues: TcxCustomEditPropertiesValues read FAssignedValues
      write SetAssignedValues;
    property ButtonsViewStyle: TcxEditButtonsViewStyle read FButtonsViewStyle
      write SetButtonsViewStyle default bvsNormal;
    property DisplayFormatOptions: TcxEditDisplayFormatOptions read GetDisplayFormatOptions;
    property FreeNotificator: TcxFreeNotificator read FFreeNotificator;
    property MaxValue: Double read GetMaxValue write SetMaxValue stored IsMaxValueStored;
    property MinValue: Double read GetMinValue write SetMinValue stored IsMinValueStored;
    property Transparent: Boolean read FTransparent write SetTransparent stored False; // deprecated
  public
    constructor Create(AOwner: TPersistent); override;
    destructor Destroy; override;
    procedure Assign(Source: TPersistent); override;
    function CanCompareEditValue: Boolean; virtual;
    class function GetButtonsClass: TcxEditButtonsClass; virtual;
    class function GetContainerClass: TcxContainerClass; virtual;
    class function GetStyleClass: TcxCustomEditStyleClass; virtual;
    class function GetViewInfoClass: TcxContainerViewInfoClass; virtual;
    procedure BeginUpdate;
    procedure Changed; virtual;
    function ChangedLocked: Boolean;
    function CompareDisplayValues(
      const AEditValue1, AEditValue2: TcxEditValue): Boolean; virtual;
    function CreatePreviewProperties: TcxCustomEditProperties; virtual;
    function CreateViewData(AStyle: TcxCustomEditStyle;
      AIsInplace: Boolean; APreviewMode: Boolean = False): TcxCustomEditViewData; virtual;
    procedure DataChanged; virtual;
    procedure EndUpdate(AInvokeChanged: Boolean = True);
    function GetDisplayText(const AEditValue: TcxEditValue;
      AFullText: Boolean = False; AIsInplace: Boolean = True): WideString; virtual;
    function GetEditConstantPartSize(ACanvas: TcxCanvas; AEditStyle: TcxCustomEditStyle;
      AIsInplace: Boolean; const AEditSizeProperties: TcxEditSizeProperties;
      var MinContentSize: TSize): TSize;
    function GetEditContentSize(ACanvas: TcxCanvas; AEditStyle: TcxCustomEditStyle;
      AIsInplace: Boolean;  const AEditValue: TcxEditValue; const AEditSizeProperties:
      TcxEditSizeProperties): TSize;
    function GetEditSize(ACanvas: TcxCanvas; AEditStyle: TcxCustomEditStyle;
      AIsInplace: Boolean; const AEditValue: TcxEditValue; AEditSizeProperties:
      TcxEditSizeProperties): TSize;
    function GetSpecialFeatures: TcxEditSpecialFeatures; virtual;
    function GetSupportedOperations: TcxEditSupportedOperations; virtual;
    function IsActivationKey(AKey: Char): Boolean; virtual;
    function IsEditValueValid(var EditValue: TcxEditValue; AEditFocused: Boolean): Boolean; virtual;
    function IsResetEditClass: Boolean; virtual;
    function IsValueEditorWithValueFormatting: Boolean;
    procedure LockUpdate(ALock: Boolean);
    procedure PrepareDisplayValue(const AEditValue: TcxEditValue; var DisplayValue: TcxEditValue; AEditFocused: Boolean); virtual;
    procedure RestoreDefaults; virtual;
    procedure Update(AProperties: TcxCustomEditProperties); virtual;
    procedure ValidateDisplayValue(var ADisplayValue: TcxEditValue;
      var AErrorText: TCaption; var AError: Boolean;
      AEdit: TcxCustomEdit); virtual;
    function GetEditValueSource(AEditFocused: Boolean): TcxDataEditValueSource; virtual;
    property Buttons: TcxEditButtons read FButtons write SetButtons;
    property IDefaultValuesProvider: IcxEditDefaultValuesProvider
      read FIDefaultValuesProvider write SetIDefaultValuesProvider;
    property IsChanging: Boolean read GetIsChanging;
    property OnPropertiesChanged: TNotifyEvent read FOnPropertiesChanged write FOnPropertiesChanged;
    property ReadOnly: Boolean read GetReadOnly write SetReadOnly stored IsReadOnlyStored;
    property UseLeftAlignmentOnEditing: Boolean read FUseLeftAlignmentOnEditing
      write SetUseLeftAlignmentOnEditing stored IsUseLeftAlignmentOnEditingStored;
    property UseMouseWheel: Boolean read FUseMouseWheel write FUseMouseWheel default True;
    // !!!
    property Alignment: TcxEditAlignment read BaseGetAlignment
      write BaseSetAlignment stored IsAlignmentStored;
    property AutoSelect: Boolean read FAutoSelect write SetAutoSelect default True;
    property BeepOnError: Boolean read FBeepOnError write FBeepOnError default False;
    property ClearKey: TShortCut read FClearKey write FClearKey default 0;
    property ClickKey: TShortCut read FClickKey write FClickKey default VK_RETURN + scCtrl;
    property ImmediatePost: Boolean read FImmediatePost write FImmediatePost default False;
    property ValidateOnEnter: Boolean read FValidateOnEnter write FValidateOnEnter default False;
    property OnButtonClick: TcxEditButtonClickEvent read FOnButtonClick write FOnButtonClick;
    property OnChange: TNotifyEvent read FOnChange write FOnChange;
    property OnClosePopup: TcxEditClosePopupEvent read FOnClosePopup write FOnClosePopup;
    property OnEditValueChanged: TNotifyEvent read FOnEditValueChanged write FOnEditValueChanged;
    property OnValidate: TcxEditValidateEvent read FOnValidate write FOnValidate;
  end;

  { TcxDataBinding }

  TcxDataBinding = class(TcxCustomDataBinding);

  { TcxEditDataBinding }

  TInterfacedObjectClass = class of TInterfacedObject;

  TcxEditDataBinding = class(TPersistent)
  private
    FIDefaultValuesProvider: TcxCustomEditDefaultValuesProvider;
    function GetIDefaultValuesProvider: IcxEditDefaultValuesProvider;
    function GetIsDataAvailable: Boolean;
  protected
    FEdit: TcxCustomEdit;
    procedure DefaultValuesChanged; virtual;
    function GetDisplayValue: TcxEditValue; virtual;
    function GetEditDataBindingInstance: TcxEditDataBinding;
    function GetEditing: Boolean; virtual;
    function GetModified: Boolean; virtual;

⌨️ 快捷键说明

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