cxinplacecontainer.pas
来自「胜天进销存源码,国产优秀的进销存」· PAS 代码 · 共 1,419 行 · 第 1/5 页
PAS
1,419 行
{********************************************************************}
{ }
{ Developer Express Visual Component Library }
{ Express Cross Platform Common Editing Library }
{ }
{ Copyright (c) 2000-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 COMMONEDITINGLIBRARY 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 cxInplaceContainer;
{$I cxVer.inc}
interface
uses
Classes, SysUtils,
Windows, Messages,
{$IFDEF DELPHI6}
Variants, Types,
{$ENDIF}
Forms, Controls, StdCtrls, Graphics, cxVariants, cxClasses,
cxControls, cxGraphics, cxStyles, cxContainer, cxEdit, cxTextEdit, cxData,
cxCustomData, cxDataUtils, cxDataStorage, cxLookAndFeels, cxLookAndFeelPainters,
cxEditDataRegisteredRepositoryItems, cxGeometry, cxLibraryConsts;
const
ecs_Content = 0;
ecs_Background = 1;
ecs_Inactive = 2;
ecs_Selection = 3;
ecs_EditContainerStylesMaxIndex = ecs_Content;
ecs_EditingStylesMaxIndex = ecs_Selection;
// predefined hit codes
echc_Empty = 0;
echc_IsMouseEvent = 1;
// viewinfo states
cvis_IsDirty = 1;
cvis_StyleInvalid = 2;
cxSizingMarkWidth = 1;
cxScrollWidthDragInterval = 50;
type
TcxDragSizingDirection = (dsdHorz, dsdVert);
TcxGetEditPropertiesEvent = procedure(Sender: TObject; AData: Pointer;
var AEditProperties: TcxCustomEditProperties) of object;
TcxOnGetContentStyleEvent = procedure(Sender: TObject; AData: Pointer;
out AStyle: TcxStyle) of object;
TcxInplaceEditContainerClass = class of TcxCustomInplaceEditContainer;
TcxCustomInplaceEditContainer = class;
TcxItemDataBindingClass = class of TcxCustomItemDataBinding;
TcxCustomControlDragAndDropObjectClass = class of TcxCustomControlDragAndDropObject;
TcxEditingController = class;
TcxEditingControllerClass = class of TcxEditingController;
TcxCustomEditStyleClass = class of TcxCustomEditStyle;
TcxCustomControlControllerClass = class of TcxCustomControlController;
TcxCustomControlController = class;
TcxControlDataController = class;
TcxCustomControlPainter = class;
TcxEditingControl = class;
TcxHotTrackControllerClass = class of TcxHotTrackController;
TcxCustomHitTestController = class;
TcxEditItemShowEditButtons = (eisbDefault, eisbNever, eisbAlways);
TcxEditingControlEditShowButtons = (ecsbAlways, ecsbFocused, ecsbNever);
TcxCustomControlViewInfo = class;
TcxCustomControlStyles = class;
TcxEditCellViewInfo = class;
TcxEditCellViewInfoClass = class of TcxEditCellViewInfo;
TcxHitCode = type Int64;
{ TcxInterfacedCollectionItem }
TcxInterfacedCollectionItem = class(TCollectionItem, IUnknown)
private
FOwnerInterface: IUnknown;
protected
// IUnknown
function _AddRef: Integer; stdcall;
function _Release: Integer; stdcall;
function QueryInterface(const IID: TGUID; out Obj): HResult; virtual; stdcall;
public
procedure AfterConstruction; override;
end;
{ TcxContainerItemDefaultValuesProvider }
TcxContainerItemDefaultValuesProvider = class(TcxCustomEditDefaultValuesProvider)
function IsDisplayFormatDefined(AIsCurrencyValueAccepted: Boolean): Boolean; override;
end;
{ TcxCustomItemDataBinding }
TcxCustomItemDataBinding = class(TcxOwnedPersistent)
private
FDefaultValuesProvider: TcxCustomEditDefaultValuesProvider;
FData: Pointer;
function GetDataController: TcxCustomDataController;
function GetEditContainer: TcxCustomInplaceEditContainer;
protected
function DefaultRepositoryItem: TcxEditRepositoryItem; virtual;
function GetDefaultCaption: string; virtual;
function GetDefaultValuesProvider(AProperties: TcxCustomEditProperties): IcxEditDefaultValuesProvider; virtual;
function GetDefaultValuesProviderClass: TcxCustomEditDefaultValuesProviderClass; virtual;
function GetValueTypeClass: TcxValueTypeClass; virtual;
procedure Init; virtual;
function IsDisplayFormatDefined(AIsCurrencyValueAccepted: Boolean): Boolean;
procedure ValueTypeClassChanged; virtual;
property DataController: TcxCustomDataController read GetDataController;
property DefaultValuesProvider: TcxCustomEditDefaultValuesProvider read FDefaultValuesProvider;
property EditContainer: TcxCustomInplaceEditContainer read GetEditContainer;
public
constructor Create(AOwner: TPersistent); override;
destructor Destroy; override;
property Data: Pointer read FData write FData;
end;
{ TcxItemDataBinding }
TcxItemDataBinding = class(TcxCustomItemDataBinding)
private
FValueTypeClass: TcxValueTypeClass;
function GetValueType: string;
procedure SetValueType(const Value: string);
procedure SetValueTypeClass(Value: TcxValueTypeClass);
protected
function GetValueTypeClass: TcxValueTypeClass; override;
function IsValueTypeStored: Boolean; virtual;
public
procedure Assign(Source: TPersistent); override;
property ValueTypeClass: TcxValueTypeClass read GetValueTypeClass write SetValueTypeClass;
published
property ValueType: string read GetValueType write SetValueType stored IsValueTypeStored;
end;
{ TcxControlDataController }
TcxControlDataController = class(TcxDataController)
private
function GetControl: TcxEditingControl;
protected
procedure UpdateControl(AInfo: TcxUpdateControlInfo); override;
public
function GetItem(Index: Integer): TObject; override;
function GetItemID(AItem: TObject): Integer; override;
function GetItemValueSource(AItemIndex: Integer): TcxDataEditValueSource; override;
procedure UpdateData; override;
procedure UpdateItemIndexes; override;
end;
{ TcxCustomEditContainerItemOptions }
TcxCustomEditContainerItemOptionsClass = class of TcxCustomEditContainerItemOptions;
TcxCustomEditContainerItemOptions = class(TcxOwnedPersistent)
private
FCustomizing: Boolean;
FEditing: Boolean;
FFiltering: Boolean;
FFocusing: Boolean;
FIncSearch: Boolean;
FMoving: Boolean;
FShowEditButtons: TcxEditItemShowEditButtons;
FSorting: Boolean;
FTabStop: Boolean;
function GetEditContainer: TcxCustomInplaceEditContainer;
procedure SetEditing(Value: Boolean);
procedure SetFiltering(Value: Boolean);
procedure SetFocusing(Value: Boolean);
procedure SetIncSearch(Value: Boolean);
procedure SetShowEditButtons(Value: TcxEditItemShowEditButtons);
protected
procedure Changed; virtual;
property EditContainer: TcxCustomInplaceEditContainer read GetEditContainer;
property Moving: Boolean read FMoving write FMoving default True;
property Customizing: Boolean read FCustomizing write FCustomizing default True;
property Sorting: Boolean read FSorting write FSorting default True;
property Editing: Boolean read FEditing write SetEditing default True;
property Filtering: Boolean read FFiltering write SetFiltering default True;
property Focusing: Boolean read FFocusing write SetFocusing default True;
property IncSearch: Boolean read FIncSearch write SetIncSearch default True;
property ShowEditButtons: TcxEditItemShowEditButtons read FShowEditButtons
write SetShowEditButtons default eisbDefault;
property TabStop: Boolean read FTabStop write FTabStop default True;
public
constructor Create(AOwner: TPersistent); override;
procedure Assign(AOwner: TPersistent); override;
end;
{ TcxControlOptionsView }
TcxControlOptionsViewClass = class of TcxControlOptionsView;
TcxControlOptionsView = class(TcxOwnedPersistent)
private
FCellAutoHeight: Boolean;
FCellEndEllipsis: Boolean;
FCellTextMaxLineCount: Integer;
FShowEditButtons: TcxEditingControlEditShowButtons;
function GetEditingControl: TcxEditingControl;
function GetScrollBars: TScrollStyle;
procedure SetCellAutoHeight(const Value: Boolean);
procedure SetCellEndEllipsis(const Value: Boolean);
procedure SetCellTextMaxLineCount(const Value: Integer);
procedure SetScrollBars(const Value: TScrollStyle);
procedure SetShowEditButtons(const Value: TcxEditingControlEditShowButtons);
protected
procedure Changed; virtual;
property EditingControl: TcxEditingControl read GetEditingControl;
public
constructor Create(AOwner: TPersistent); override;
procedure Assign(Source: TPersistent); override;
published
property CellAutoHeight: Boolean read FCellAutoHeight write SetCellAutoHeight default False;
property CellEndEllipsis: Boolean read FCellEndEllipsis write SetCellEndEllipsis default False;
property CellTextMaxLineCount: Integer read FCellTextMaxLineCount write SetCellTextMaxLineCount default 0;
property ScrollBars: TScrollStyle read GetScrollBars write SetScrollBars default ssBoth;
property ShowEditButtons: TcxEditingControlEditShowButtons read FShowEditButtons write SetShowEditButtons default ecsbNever;
end;
{ TcxControlOptionsData }
TcxControlOptionsDataClass = class of TcxControlOptionsData;
TcxControlOptionsData = class(TcxOwnedPersistent)
private
FCancelOnExit: Boolean;
FEditing: Boolean;
function GetEditingControl: TcxEditingControl;
procedure SetEditing(Value: Boolean);
protected
procedure Changed; virtual;
public
constructor Create(AOwner: TPersistent); override;
procedure Assign(Source: TPersistent); override;
property EditingControl: TcxEditingControl read GetEditingControl;
published
property CancelOnExit: Boolean read FCancelOnExit write FCancelOnExit default True;
property Editing: Boolean read FEditing write SetEditing default True;
end;
{ TcxControlOptionsBehavior }
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?