cxblobedit.pas
来自「胜天进销存源码,国产优秀的进销存」· PAS 代码 · 共 1,542 行 · 第 1/4 页
PAS
1,542 行
{********************************************************************}
{ }
{ 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 cxBlobEdit;
{$I cxVer.inc}
interface
uses
Windows, Messages, ExtDlgs,
{$IFDEF DELPHI6}
Types,
{$ENDIF}
SysUtils, Classes, Graphics, Controls, Forms, ExtCtrls,
Dialogs, StdCtrls, ImgList, Clipbrd,
cxClasses, cxControls, cxContainer, cxGraphics, cxDataStorage, cxDataUtils,
cxEdit, cxDropDownEdit, cxEditConsts, cxTextEdit, cxButtons, cxImage, cxMemo,
cxFilterControlUtils;
type
TcxBlobPaintStyle = (bpsDefault, bpsIcon, bpsText);
TcxBlobEditKind = (bekAuto, bekMemo, bekPict, bekOle, bekBlob);
{ TcxBlobEditViewData }
TcxBlobEditViewData = class(TcxCustomDropDownEditViewData)
protected
function InternalGetEditConstantPartSize(ACanvas: TcxCanvas; AIsInplace: Boolean;
AEditSizeProperties: TcxEditSizeProperties; var MinContentSize: TSize;
AViewInfo: TcxCustomEditViewInfo): TSize; override;
function InternalEditValueToDisplayText(AEditValue: TcxEditValue): string; override;
procedure PrepareDrawTextFlags(ACanvas: TcxCanvas;
AViewInfo: TcxCustomEditViewInfo); override;
public
procedure Calculate(ACanvas: TcxCanvas; const ABounds: TRect; const P: TPoint;
Button: TcxMouseButton; Shift: TShiftState;
AViewInfo: TcxCustomEditViewInfo; AIsMouseEvent: Boolean); override;
procedure EditValueToDrawValue(ACanvas: TcxCanvas; const AEditValue: TcxEditValue;
AViewInfo: TcxCustomEditViewInfo); override;
end;
{ TcxBlobEditViewInfo }
TcxBlobEditViewInfo = class(TcxCustomTextEditViewInfo)
protected
procedure InternalPaint(ACanvas: TcxCanvas); override;
public
IconRect: TRect;
ImageIndex: TImageIndex;
function NeedShowHint(ACanvas: TcxCanvas; const P: TPoint; out AText: TCaption;
out AIsMultiLine: Boolean; out ATextRect: TRect): Boolean; override;
procedure Offset(DX, DY: Integer); override;
end;
{ TcxCustomBlobEditProperties }
TcxCustomBlobEditProperties = class(TcxCustomPopupEditProperties)
private
// common
FAlwaysSaveData: Boolean;
FBlobEditKind: TcxBlobEditKind;
FBlobPaintStyle: TcxBlobPaintStyle;
// memo
FMemoAutoReplace: Boolean;
FMemoWantReturns: Boolean;
FMemoWantTabs: Boolean;
FMemoOEMConvert: Boolean;
FMemoWordWrap: Boolean;
FMemoMaxLength: Integer;
FMemoCharCase: TEditCharCase;
FMemoScrollBars: TScrollStyle;
// picture
FPictureAutoSize: Boolean;
FPictureClipboardFormat: Word;
FPictureFilter: string;
FPictureGraphicClass: TGraphicClass;
FPictureTransparency: TcxImageTransparency;
FShowExPopupItems: Boolean;
FShowPicturePopup: Boolean;
FOnAssignPicture: TcxImageAssignPictureEvent;
FOnGetGraphicClass: TcxImageGraphicClassEvent;
function GetPictureGraphicClassName: string;
function IsPictureGraphicClassNameStored: Boolean;
procedure ReadIsPictureGraphicClassNameEmpty(Reader: TReader);
procedure SetBlobEditKind(const Value: TcxBlobEditKind);
procedure SetBlobPaintStyle(const Value: TcxBlobPaintStyle);
procedure SetPictureGraphicClass(Value: TGraphicClass);
procedure SetPictureGraphicClassName(const Value: string);
procedure WriteIsPictureGraphicClassNameEmpty(Writer: TWriter);
protected
function CanValidate: Boolean; override;
procedure DefineProperties(Filer: TFiler); override;
function DropDownOnClick: Boolean; override;
function GetDisplayFormatOptions: TcxEditDisplayFormatOptions; override;
class function GetPopupWindowClass: TcxCustomEditPopupWindowClass; override;
class function GetViewDataClass: TcxCustomEditViewDataClass; override;
function HasDisplayValue: Boolean; override;
procedure CorrectBlobEditKind;
function GetDefaultPictureGraphicClass: TGraphicClass; virtual;
function GetPictureGraphicClass(AItem: TObject; ARecordIndex: Integer;
APastingFromClipboard: Boolean = False): TGraphicClass;
// Picture
property PictureClipboardFormat: Word
read FPictureClipboardFormat write FPictureClipboardFormat;
public
constructor Create(AOwner: TPersistent); override;
procedure Assign(Source: TPersistent); override;
function CompareDisplayValues(
const AEditValue1, AEditValue2: TcxEditValue): Boolean; override;
class function GetContainerClass: TcxContainerClass; override;
function GetDisplayText(const AEditValue: TcxEditValue;
AFullText: Boolean = False; AIsInplace: Boolean = True): WideString; override;
function GetEditValueSource(AEditFocused: Boolean): TcxDataEditValueSource; override;
function GetSpecialFeatures: TcxEditSpecialFeatures; override;
function GetSupportedOperations: TcxEditSupportedOperations; override;
class function GetViewInfoClass: TcxContainerViewInfoClass; override;
function IsEditValueValid(var AEditValue: TcxEditValue; AEditFocused: Boolean): Boolean; override;
property PictureGraphicClass: TGraphicClass
read FPictureGraphicClass write SetPictureGraphicClass;
// !!!
// Common
property AlwaysSaveData: Boolean
read FAlwaysSaveData write FAlwaysSaveData default True;
property BlobEditKind: TcxBlobEditKind
read FBlobEditKind write SetBlobEditKind default bekAuto;
property BlobPaintStyle: TcxBlobPaintStyle
read FBlobPaintStyle write SetBlobPaintStyle default bpsIcon;
property ImmediatePopup default True;
// Memo
property MemoAutoReplace: Boolean
read FMemoAutoReplace write FMemoAutoReplace default False;
property MemoCharCase: TEditCharCase
read FMemoCharCase write FMemoCharCase default ecNormal;
property MemoMaxLength: Integer
read FMemoMaxLength write FMemoMaxLength default 0;
property MemoOEMConvert: Boolean
read FMemoOEMConvert write FMemoOEMConvert default False;
property MemoScrollBars: TScrollStyle
read FMemoScrollBars write FMemoScrollBars default ssNone;
property MemoWantReturns: Boolean
read FMemoWantReturns write FMemoWantReturns default True;
property MemoWantTabs: Boolean
read FMemoWantTabs write FMemoWantTabs default True;
property MemoWordWrap: Boolean
read FMemoWordWrap write FMemoWordWrap default True;
// Picture
property PictureAutoSize: Boolean
read FPictureAutoSize write FPictureAutoSize default True;
property PictureFilter: string
read FPictureFilter write FPictureFilter;
property PictureGraphicClassName: string
read GetPictureGraphicClassName write SetPictureGraphicClassName
stored IsPictureGraphicClassNameStored;
property PictureTransparency: TcxImageTransparency
read FPictureTransparency write FPictureTransparency default gtDefault;
property ShowExPopupItems: Boolean
read FShowExPopupItems write FShowExPopupItems default True;
property ShowPicturePopup: Boolean
read FShowPicturePopup write FShowPicturePopup default True;
property OnAssignPicture: TcxImageAssignPictureEvent
read FOnAssignPicture write FOnAssignPicture;
property OnGetGraphicClass: TcxImageGraphicClassEvent
read FOnGetGraphicClass write FOnGetGraphicClass;
end;
{ TcxBlobEditProperties }
TcxBlobEditProperties = class(TcxCustomBlobEditProperties)
published
property AlwaysSaveData;
property AssignedValues;
property BlobEditKind;
property BlobPaintStyle;
property ClearKey;
property ImeMode;
property ImeName;
property ImmediatePopup;
property ImmediatePost;
property MemoAutoReplace;
property MemoCharCase;
property MemoMaxLength;
property MemoOEMConvert;
property MemoScrollBars;
property MemoWantReturns;
property MemoWantTabs;
property MemoWordWrap;
property PictureAutoSize;
property PictureFilter;
property PictureGraphicClassName;
property PictureTransparency;
property PopupHeight;
property PopupWidth;
property ReadOnly;
property ShowExPopupItems;
property ShowPicturePopup;
property OnAssignPicture;
property OnButtonClick;
property OnChange;
property OnCloseQuery;
property OnCloseUp;
property OnEditValueChanged;
property OnGetGraphicClass;
property OnInitPopup;
property OnPopup;
property OnValidate;
end;
{ TcxCustomBlobEdit }
TcxCustomBlobEdit = class(TcxCustomPopupEdit)
private
FButtonWidth: Integer;
FCancelButton: TcxButton;
FGraphicClass: TGraphicClass;
FOkButton: TcxButton;
FStorage: TcxCustomEdit;
FOnGetGraphicClass: TcxImageEditGraphicClassEvent;
procedure DoPopupImageGetGraphicClass(Sender: TObject;
APastingFromClipboard: Boolean; var AGraphicClass: TGraphicClass);
procedure DoPopupImagePropertiesGetGraphicClass(AItem: TObject;
ARecordIndex: Integer; APastingFromClipboard: Boolean;
var AGraphicClass: TGraphicClass);
function GetActiveProperties: TcxCustomBlobEditProperties;
function GetProperties: TcxCustomBlobEditProperties;
procedure InternalChanged(Sender: TObject);
procedure PictureClosePopup(Sender: TcxControl; AReason: TcxEditCloseUpReason);
procedure SaveStorage;
procedure SetProperties(Value: TcxCustomBlobEditProperties);
protected
procedure ColorChanged; override;
procedure CreatePopupControls; virtual;
procedure DoAssignPicture;
procedure DoEditKeyPress(var Key: Char); override;
procedure DoOnAssignPicture(APicture: TPicture);
procedure FontChanged; override;
function GetDisplayValue: string; override;
function GetEditingValue: TcxEditValue; override;
function GetPopupFocusedControl: TWinControl; override;
function GetPopupWindowClientPreferredSize: TSize; override;
procedure InternalValidateDisplayValue(const ADisplayValue: TcxEditValue); override;
procedure DestroyPopupControls; virtual;
procedure DoInitPopup; override;
function GetPictureGraphicClass(APastingFromClipboard: Boolean = False): TGraphicClass;
procedure Initialize; override;
function InternalGetText: string; override;
function InternalSetText(const Value: string): Boolean; override;
procedure PopupWindowClosed(Sender: TObject); override;
procedure PropertiesChanged(Sender: TObject); override;
procedure SetEditingText(const Value: TCaption); override;
procedure SetupPopupWindow; override;
procedure StorageEditingHandler(Sender: TObject; var CanEdit: Boolean); virtual;
procedure SynchronizeDisplayValue; override;
procedure SynchronizeEditValue; override;
property TabStop default True;
property OnGetGraphicClass: TcxImageEditGraphicClassEvent
read FOnGetGraphicClass write FOnGetGraphicClass;
public
destructor Destroy; override;
class function GetPropertiesClass: TcxCustomEditPropertiesClass; override;
function IsEditClass: Boolean; override;
property ActiveProperties: TcxCustomBlobEditProperties
read GetActiveProperties;
property Properties: TcxCustomBlobEditProperties read GetProperties
write SetProperties;
end;
{ TcxBlobEdit }
TcxBlobEdit = class(TcxCustomBlobEdit)
private
function GetActiveProperties: TcxBlobEditProperties;
function GetProperties: TcxBlobEditProperties;
procedure SetProperties(Value: TcxBlobEditProperties);
public
class function GetPropertiesClass: TcxCustomEditPropertiesClass; override;
property ActiveProperties: TcxBlobEditProperties read GetActiveProperties;
published
property Anchors;
property AutoSize;
property BeepOnEnter;
property Constraints;
property DragCursor;
property DragKind;
property DragMode;
property Enabled;
property ImeMode;
property ImeName;
property ParentColor;
property ParentFont;
property ParentShowHint;
property PopupMenu;
property Properties: TcxBlobEditProperties read GetProperties
write SetProperties;
property ShowHint;
property Style;
property StyleDisabled;
property StyleFocused;
property StyleHot;
property TabOrder;
property TabStop;
property Text;
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 OnMouseMove;
property OnMouseUp;
property OnStartDrag;
property BiDiMode;
property ParentBiDiMode;
property OnEndDock;
property OnStartDock;
end;
{ TcxFilterBlobEditHelper }
TcxFilterBlobEditHelper = class(TcxFilterTextEditHelper)
public
class function GetSupportedFilterOperators(
AProperties: TcxCustomEditProperties;
AValueTypeClass: TcxValueTypeClass;
AExtendedSet: Boolean = False): TcxFilterControlOperators; override;
end;
{ TcxBlobEditPopupWindow }
TcxBlobEditPopupWindow = class(TcxPopupEditPopupWindow)
protected
procedure DoPopupControlKey(Key: Char); override;
end;
function GetBlobText(const Value: TcxEditValue;
AProperties: TcxCustomBlobEditProperties; AFullText: Boolean): WideString;
var
imgBlobImages: TImageList = nil;
implementation
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?