cxdbedit.pas

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

PAS
2,143
字号

{********************************************************************}
{                                                                    }
{       Developer Express Visual Component Library                   }
{       ExpressEditors                                               }
{                                                                    }
{       Copyright (c) 1998-2008 Developer Express Inc.               }
{       ALL RIGHTS RESERVED                                          }
{                                                                    }
{   The entire contents of this file is protected by U.S. and        }
{   International Copyright Laws. Unauthorized reproduction,         }
{   reverse-engineering, and distribution of all or any portion of   }
{   the code contained in this file is strictly prohibited and may   }
{   result in severe civil and criminal penalties and will be        }
{   prosecuted to the maximum extent possible under the law.         }
{                                                                    }
{   RESTRICTIONS                                                     }
{                                                                    }
{   THIS SOURCE CODE AND ALL RESULTING INTERMEDIATE FILES            }
{   (DCU, OBJ, DLL, ETC.) ARE CONFIDENTIAL AND PROPRIETARY TRADE     }
{   SECRETS OF DEVELOPER EXPRESS INC. THE REGISTERED DEVELOPER IS    }
{   LICENSED TO DISTRIBUTE THE EXPRESSEDITORS AND ALL                }
{   ACCOMPANYING VCL CONTROLS AS PART OF AN EXECUTABLE PROGRAM ONLY. }
{                                                                    }
{   THE SOURCE CODE CONTAINED WITHIN THIS FILE AND ALL RELATED       }
{   FILES OR ANY PORTION OF ITS CONTENTS SHALL AT NO TIME BE         }
{   COPIED, TRANSFERRED, SOLD, DISTRIBUTED, OR OTHERWISE MADE        }
{   AVAILABLE TO OTHER INDIVIDUALS WITHOUT EXPRESS WRITTEN CONSENT   }
{   AND PERMISSION FROM DEVELOPER EXPRESS INC.                       }
{                                                                    }
{   CONSULT THE END USER LICENSE AGREEMENT FOR INFORMATION ON        }
{   ADDITIONAL RESTRICTIONS.                                         }
{                                                                    }
{********************************************************************}

unit cxDBEdit;

{$I cxVer.inc}

interface

uses
{$IFDEF DELPHI6}
  Variants,
{$ENDIF}
  Windows, Messages,
  Classes, Controls, DB, DBCtrls, SysUtils, cxBlobEdit, cxButtonEdit, cxCalc,
  cxCalendar, cxCheckBox, cxClasses, cxContainer, cxCurrencyEdit, cxCustomData,
  cxDataUtils, cxDB, cxDropDownEdit, cxEdit, cxHyperLinkEdit, cxImage,
  cxImageComboBox, cxListBox, cxMaskEdit, cxMemo, cxMRUEdit, cxRadioGroup,
  cxSpinEdit, cxTextEdit, cxTimeEdit;

type
  TcxDBTextEdit = class;

  { TcxCustomDBEditDefaultValuesProvider }

  TcxCustomDBEditDefaultValuesProvider = class(TcxCustomEditDefaultValuesProvider)
  private
    FDataSource: TDataSource;
    FField: TField;
    FFreeNotifier: TcxFreeNotificator;
    procedure FieldFreeNotification(Sender: TComponent);
    procedure SetDataSource(Value: TDataSource);
    procedure SetField(Value: TField);
  public
    constructor Create(AOwner: TPersistent); override;
    destructor Destroy; override;
    function CanSetEditMode: Boolean; override;
    function DefaultAlignment: TAlignment; override;
    function DefaultBlobKind: TcxBlobKind; override;
    function DefaultCanModify: Boolean; override;
    function DefaultDisplayFormat: string; override;
    function DefaultEditFormat: string; override;
    function DefaultEditMask: string; override;
    function DefaultIsFloatValue: Boolean; override;
    function DefaultMaxLength: Integer; override;
    function DefaultMaxValue: Double; override;
    function DefaultMinValue: Double; override;
    function DefaultPrecision: Integer; override;
    function DefaultReadOnly: Boolean; override;
    function DefaultRequired: Boolean; override;
    function IsBlob: Boolean; override;
    function IsCurrency: Boolean; override;
    function IsDataAvailable: Boolean; override;
    function IsDataStorage: Boolean; override;
    function IsDisplayFormatDefined(AIsCurrencyValueAccepted: Boolean): Boolean; override;
    function IsOnGetTextAssigned: Boolean; override;
    function IsOnSetTextAssigned: Boolean; override;
    function IsValidChar(AChar: Char): Boolean; override;
    property DataSource: TDataSource read FDataSource write SetDataSource;
    property Field: TField read FField write SetField;
  end;

  { TcxDBFieldDataLink }

  TcxDBFieldDataLink = class(TcxCustomFieldDataLink)
  protected
    procedure FocusControl(Field: TFieldRef); override;
    procedure VisualControlChanged; override;
    procedure UpdateRightToLeft; override;
  end;

  { TcxDBDataBinding }

  TcxDBDataBinding = class(TcxCustomDBDataBinding)
  protected
    function GetDataLinkClass: TcxCustomFieldDataLinkClass; override;
  published
    property DataSource;
    property DataField;
  end;

  { TcxEditFieldDataLink }

  TcxDBEditDataBinding = class;

  TcxEditFieldDataLink = class(TDataLink)
  private
    FControl: TComponent;
    FDataBinding: TcxDBEditDataBinding;
    FEditing: Boolean;
    FField: TField;
    FFieldName: string;
    FFreeNotifier: TcxFreeNotificator;
    FMasterField: TField;
    FModified: Boolean;
    procedure FieldFreeNotification(Sender: TComponent);
    function GetCanModify: Boolean;
    procedure InternalSetField(Value: TField);
    procedure SetEditing(Value: Boolean);
    procedure SetField(Value: TField);
    procedure SetFieldName(const Value: string);
    procedure UpdateField;
    procedure UpdateMasterField;
    procedure UpdateRightToLeft;
  protected
    procedure ActiveChanged; override;
    procedure DataEvent(Event: TDataEvent;
      Info: Longint); override;
    procedure EditingChanged; override;
    procedure FocusControl(Field: TFieldRef); override;
    procedure LayoutChanged; override;
    procedure RecordChanged(Field: TField); override;
    procedure UpdateData; override;
    procedure ResetModified;
  public
    constructor Create(ADataBinding: TcxDBEditDataBinding);
    destructor Destroy; override;
    function Edit: Boolean;
    procedure Modified;
    procedure Reset;
    property CanModify: Boolean read GetCanModify;
    property Control: TComponent read FControl write FControl;
    property Editing: Boolean read FEditing;
    property Field: TField read FField;
    property FieldName: string read FFieldName write SetFieldName;
  end;

  { TcxDBEditDataBinding }

  TcxDBEditDataBinding = class(TcxEditDataBinding)
  private
    FDataLink: TcxEditFieldDataLink;
    FRefreshCount: Integer;
    function GetDataField: string;
    function GetDataSource: TDataSource;
    function GetDefaultValuesProvider: TcxCustomDBEditDefaultValuesProvider;
    function GetField: TField;
    procedure SetDataField(const Value: string);
    procedure SetDataSource(Value: TDataSource);
  protected
    procedure DefaultValuesChanged; override;
    procedure DisableRefresh;
    procedure EnableRefresh;
    function GetEditing: Boolean; override;
    function GetModified: Boolean; override;
    function GetStoredValue: TcxEditValue; override;
    function IsRefreshDisabled: Boolean;
    procedure Reset; override;
    procedure SetDisplayValue(const Value: TcxEditValue); override;
    function SetEditMode: Boolean; override;
    procedure SetStoredValue(const Value: TcxEditValue); override;
    procedure DataChanged; virtual;
    procedure DataSetChange; virtual;
    procedure EditingChanged; virtual;
    function IsLookupControl: Boolean; virtual;
    procedure UpdateData; virtual;
    property DefaultValuesProvider: TcxCustomDBEditDefaultValuesProvider read GetDefaultValuesProvider;
  public
    constructor Create(AEdit: TcxCustomEdit); override;
    destructor Destroy; override;
    procedure Assign(Source: TPersistent); override;
    function CanCheckEditorValue: Boolean; override;
    function CanPostEditorValue: Boolean; override;
    function ExecuteAction(Action: TBasicAction): Boolean; override;
    class function GetDefaultValuesProviderClass: TcxCustomEditDefaultValuesProviderClass; override;
    procedure SetModified; override;
    function UpdateAction(Action: TBasicAction): Boolean; override;
    procedure UpdateDisplayValue; override;
    procedure UpdateNotConnectedDBEditDisplayValue; override;
    property DataLink: TcxEditFieldDataLink read FDataLink;
    property Field: TField read GetField;
  published
    property DataField: string read GetDataField write SetDataField;
    property DataSource: TDataSource read GetDataSource write SetDataSource;
  end;

  { TcxDBTextEditDataBinding }

  TcxDBTextEditDataBinding = class(TcxDBEditDataBinding)
  protected
    procedure SetDisplayValue(const Value: TcxEditValue); override;
  public
    procedure UpdateNotConnectedDBEditDisplayValue; override;
  end;

  { TcxDBTextEdit }

  TcxDBTextEdit = class(TcxCustomTextEdit)
  private
    function GetActiveProperties: TcxTextEditProperties;
    function GetDataBinding: TcxDBTextEditDataBinding;
    function GetProperties: TcxTextEditProperties;
    procedure SetDataBinding(Value: TcxDBTextEditDataBinding);
    procedure SetProperties(Value: TcxTextEditProperties);
    procedure CMGetDataLink(var Message: TMessage); message CM_GETDATALINK;
  protected
    class function GetDataBindingClass: TcxEditDataBindingClass; override;
    function IsCheckAsYouTypeSupports: Boolean; override;
  public
    class function GetPropertiesClass: TcxCustomEditPropertiesClass; override;
    property ActiveProperties: TcxTextEditProperties read GetActiveProperties;
  published
    property Anchors;
    property AutoSize;
    property BeepOnEnter;
    property Constraints;
    property DataBinding: TcxDBTextEditDataBinding read GetDataBinding
      write SetDataBinding;
    property DragCursor;
    property DragKind;
    property DragMode;
    property Enabled;
    property ImeMode;
    property ImeName;
    property ParentColor;
    property ParentFont;
    property ParentShowHint;
    property PopupMenu;
    property Properties: TcxTextEditProperties read GetProperties
      write SetProperties;
    property ShowHint;
    property Style;
    property StyleDisabled;
    property StyleFocused;
    property StyleHot;
    property TabOrder;
    property TabStop;
    property Visible;
    property OnClick;
{$IFDEF DELPHI5}
    property OnContextPopup;
{$ENDIF}
    property OnDblClick;
    property OnDragDrop;
    property OnDragOver;
    property OnEditing;
    property OnEndDrag;
    property OnEnter;
    property OnExit;
    property OnKeyDown;
    property OnKeyPress;
    property OnKeyUp;
    property OnMouseDown;
    property OnMouseEnter;
    property OnMouseLeave;
    property OnMouseMove;
    property OnMouseUp;
    property OnStartDrag;
    property OnEndDock;
    property OnStartDock;
  end;

  { TcxDBMemo }

  TcxDBMemo = class(TcxCustomMemo)
  private
    function GetActiveProperties: TcxMemoProperties;
    function GetDataBinding: TcxDBTextEditDataBinding;
    function GetProperties: TcxMemoProperties;
    procedure SetDataBinding(Value: TcxDBTextEditDataBinding);
    procedure SetProperties(Value: TcxMemoProperties);
    procedure CMGetDataLink(var Message: TMessage); message CM_GETDATALINK;
  protected
    class function GetDataBindingClass: TcxEditDataBindingClass; override;
  public
    class function GetPropertiesClass: TcxCustomEditPropertiesClass; override;
    property ActiveProperties: TcxMemoProperties read GetActiveProperties;
  published
    property Align;
    property Anchors;
    property Constraints;
    property DataBinding: TcxDBTextEditDataBinding read GetDataBinding
      write SetDataBinding;
    property DragCursor;
    property DragKind;
    property DragMode;
    property Enabled;
    property ImeMode;
    property ImeName;
    property ParentColor;
    property ParentFont;
    property ParentShowHint;
    property PopupMenu;
    property Properties: TcxMemoProperties read GetProperties
      write SetProperties;
    property ShowHint;
    property Style;
    property StyleDisabled;
    property StyleFocused;
    property StyleHot;
    property TabOrder;
    property TabStop;
    property Visible;
    property OnClick;
{$IFDEF DELPHI5}
    property OnContextPopup;
{$ENDIF}
    property OnDblClick;
    property OnDragDrop;
    property OnDragOver;
    property OnEditing;
    property OnEndDock;
    property OnEndDrag;
    property OnEnter;
    property OnExit;
    property OnKeyDown;
    property OnKeyPress;
    property OnKeyUp;
    property OnMouseDown;
    property OnMouseEnter;
    property OnMouseLeave;
    property OnMouseMove;
    property OnMouseUp;
    property OnStartDock;
    property OnStartDrag;
  end;

  { TcxDBMaskEdit }

  TcxDBMaskEdit = class(TcxCustomMaskEdit)
  private
    function GetActiveProperties: TcxMaskEditProperties;
    function GetDataBinding: TcxDBTextEditDataBinding;
    function GetProperties: TcxMaskEditProperties;
    procedure SetDataBinding(Value: TcxDBTextEditDataBinding);
    procedure SetProperties(Value: TcxMaskEditProperties);
    procedure CMGetDataLink(var Message: TMessage); message CM_GETDATALINK;
  protected
    class function GetDataBindingClass: TcxEditDataBindingClass; override;
    function IsCheckAsYouTypeSupports: Boolean; override;
  public
    class function GetPropertiesClass: TcxCustomEditPropertiesClass; override;
    property ActiveProperties: TcxMaskEditProperties read GetActiveProperties;
  published
    property Anchors;
    property AutoSize;
    property BeepOnEnter;
    property Constraints;
    property DataBinding: TcxDBTextEditDataBinding read GetDataBinding
      write SetDataBinding;
    property DragCursor;
    property DragKind;
    property DragMode;
    property Enabled;
    property ImeMode;
    property ImeName;
    property ParentColor;
    property ParentFont;
    property ParentShowHint;
    property PopupMenu;
    property Properties: TcxMaskEditProperties read GetProperties
      write SetProperties;
    property ShowHint;
    property Style;
    property StyleDisabled;
    property StyleFocused;
    property StyleHot;
    property TabOrder;
    property TabStop;
    property Visible;
    property OnClick;
{$IFDEF DELPHI5}
    property OnContextPopup;
{$ENDIF}
    property OnDblClick;
    property OnDragDrop;
    property OnDragOver;
    property OnEditing;
    property OnEndDrag;
    property OnEnter;
    property OnExit;
    property OnKeyDown;
    property OnKeyPress;
    property OnKeyUp;
    property OnMouseDown;
    property OnMouseEnter;
    property OnMouseLeave;
    property OnMouseMove;
    property OnMouseUp;
    property OnStartDrag;
    property OnEndDock;
    property OnStartDock;
  end;

  { TcxDBButtonEdit }

  TcxDBButtonEdit = class(TcxCustomButtonEdit)
  private
    function GetActiveProperties: TcxButtonEditProperties;
    function GetDataBinding: TcxDBTextEditDataBinding;
    function GetProperties: TcxButtonEditProperties;
    procedure SetDataBinding(Value: TcxDBTextEditDataBinding);
    procedure SetProperties(Value: TcxButtonEditProperties);
    procedure CMGetDataLink(var Message: TMessage); message CM_GETDATALINK;
  protected
    class function GetDataBindingClass: TcxEditDataBindingClass; override;
  public

⌨️ 快捷键说明

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