cxrichedit.pas
来自「胜天进销存源码,国产优秀的进销存」· PAS 代码 · 共 1,877 行 · 第 1/5 页
PAS
1,877 行
function GetInnerRich: TcxRichInnerEdit;
procedure SetLines(Value: TStrings);
function GetActiveProperties: TcxCustomRichEditProperties;
function GetProperties: TcxCustomRichEditProperties;
function GetRichVersion: Integer;
procedure SetProperties(Value: TcxCustomRichEditProperties);
function GetCanUndo: Boolean;
function GetDefAttributes: TTextAttributes;
function GetDefaultConverter: TConversionClass;
function GetPageRect: TRect;
function GetParagraph: TParaAttributes;
function GetSelAttributes: TTextAttributes;
procedure RefreshScrollBars;
procedure SetDefAttributes(const Value: TTextAttributes);
procedure SetDefaultConverter(Value: TConversionClass);
procedure SetPageRect(const Value: TRect);
procedure SetSelAttributes(const Value: TTextAttributes);
procedure EMCanPaste(var Message: TMessage); message EM_CANPASTE;
procedure CMVisibleChanged(var Message: TMessage); message CM_VISIBLECHANGED;
protected
procedure AdjustInnerEdit; override;
function CanFocusOnClick: Boolean; override;
function CanKeyDownModifyEdit(Key: Word; Shift: TShiftState): Boolean; override;
procedure ContainerStyleChanged(Sender: TObject); override;
function DoShowPopupMenu(AMenu: TComponent; X, Y: Integer): Boolean; override;
function GetEditValue: TcxEditValue; override;
function GetInnerEditClass: TControlClass; override;
procedure ChangeHandler(Sender: TObject); override;
procedure Scroll(AScrollBarKind: TScrollBarKind; AScrollCode: TScrollCode;
var AScrollPos: Integer); override;
procedure Initialize; override;
procedure InternalSetEditValue(const Value: TcxEditValue;
AValidateEditValue: Boolean); override;
procedure InternalValidateDisplayValue(const ADisplayValue: TcxEditValue); override;
function CanDeleteSelection: Boolean;
procedure Changed(Sender: TObject);
procedure DoOnResizeRequest(const R: TRect);
procedure DoOnSelectionChange;
procedure DoTextChanged; override;
procedure PropertiesChanged(Sender: TObject); override;
procedure ResetEditValue; override;
procedure SetParent(AParent: TWinControl); override;
procedure SynchronizeDisplayValue; override;
procedure SynchronizeEditValue; override;
procedure UpdateScrollBars; override;
function GetEditPopupMenuInstance: TComponent; virtual;
function IsNavigationKey(Key: Word; Shift: TShiftState): Boolean; virtual;
function UpdateContentOnFocusChanging: Boolean; override;
procedure UpdateEditPopupMenuItems(APopupMenu: TComponent); virtual;
property EditPopupMenu: TComponent read FEditPopupMenu write FEditPopupMenu;
property InnerRich: TcxRichInnerEdit read GetInnerRich;
property PropertiesChange: Boolean read FPropertiesChange;
public
destructor Destroy; override;
procedure ClearSelection; override;
procedure CutToClipboard; override;
function FindTexT(const ASearchStr: string; AStartPos, ALength: Integer;
AOptions: TSearchTypes): Integer;
class function GetPropertiesClass: TcxCustomEditPropertiesClass; override;
procedure PasteFromClipboard; override;
procedure PrepareEditValue(const ADisplayValue: TcxEditValue;
out EditValue: TcxEditValue; AEditFocused: Boolean); override;
procedure Print(const Caption: string); virtual;
procedure SaveSelectionToStream(Stream: TStream); virtual;
procedure Undo; override;
function InsertObject: Boolean;
function PasteSpecial: Boolean;
function ShowObjectProperties: Boolean;
class procedure RegisterConversionFormat(const AExtension: string;
AConversionClass: TConversionClass);
property ActiveProperties: TcxCustomRichEditProperties
read GetActiveProperties;
property CanUndo: Boolean read GetCanUndo;
property DefAttributes: TTextAttributes read GetDefAttributes write SetDefAttributes;
property DefaultConverter: TConversionClass
read GetDefaultConverter write SetDefaultConverter;
property Lines: TStrings read GetLines write SetLines;
property PageRect: TRect read GetPageRect write SetPageRect;
property Paragraph: TParaAttributes read GetParagraph;
property Properties: TcxCustomRichEditProperties read GetProperties
write SetProperties;
property RichVersion: Integer read GetRichVersion;
property SelAttributes: TTextAttributes read GetSelAttributes write SetSelAttributes;
end;
{ TcxRichEdit }
TcxRichEdit = class(TcxCustomRichEdit)
private
function GetActiveProperties: TcxRichEditProperties;
function GetProperties: TcxRichEditProperties;
procedure SetProperties(Value: TcxRichEditProperties);
public
class function GetPropertiesClass: TcxCustomEditPropertiesClass; override;
property ActiveProperties: TcxRichEditProperties read GetActiveProperties;
published
property Align;
property Anchors;
property Constraints;
property DragCursor;
property DragKind;
property DragMode;
property Enabled;
property ImeMode;
property ImeName;
property ParentColor;
property ParentFont;
property ParentShowHint;
property PopupMenu;
property Properties: TcxRichEditProperties read GetProperties
write SetProperties;
property Lines; // must be after Properties because of Properties.Alignment
property ShowHint;
property Style;
property StyleDisabled;
property StyleFocused;
property StyleHot;
property TabOrder;
property TabStop;
property Visible;
property OnClick;
property OnContextPopup;
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 OnMouseWheel;
property OnMouseWheelDown;
property OnMouseWheelUp;
property OnStartDock;
property OnStartDrag;
end;
TcxRichInnerEditHelper = class(TcxInterfacedPersistent,
IcxContainerInnerControl, IcxCustomInnerEdit, IcxInnerTextEdit,
IcxInnerMemo)
private
FEdit: TcxRichInnerEdit;
protected
property Edit: TcxRichInnerEdit read FEdit;
public
constructor Create(AEdit: TcxRichInnerEdit); reintroduce; virtual;
// IcxContainerInnerControl
function GetControlContainer: TcxContainer;
function GetControl: TWinControl;
// IcxCustomInnerEdit
function CallDefWndProc(AMsg: UINT; WParam: WPARAM;
LParam: LPARAM): LRESULT;
function GetEditValue: TcxEditValue;
function GetOnChange: TNotifyEvent;
procedure LockBounds(ALock: Boolean);
procedure SafelySetFocus;
procedure SetEditValue(const Value: TcxEditValue);
procedure SetParent(Value: TWinControl);
procedure SetOnChange(Value: TNotifyEvent);
// IcxInnerTextEdit
procedure ClearSelection;
procedure CopyToClipboard;
function GetAlignment: TAlignment;
function GetAutoSelect: Boolean;
function GetCharCase: TEditCharCase;
function GetEchoMode: TcxEditEchoMode;
function GetFirstVisibleCharIndex: Integer;
function GetHideSelection: Boolean;
function GetImeLastChar: Char;
function GetImeMode: TImeMode;
function GetImeName: TImeName;
function GetInternalUpdating: Boolean;
function GetMaxLength: Integer;
function GetMultiLine: Boolean;
function GetOEMConvert: Boolean;
function GetOnSelChange: TNotifyEvent;
function GetPasswordChar: TCaptionChar;
function GetReadOnly: Boolean;
function GetSelLength: Integer;
function GetSelStart: Integer;
function GetSelText: string;
procedure SelectAll;
procedure SetAlignment(Value: TAlignment);
procedure SetAutoSelect(Value: Boolean);
procedure SetCharCase(Value: TEditCharCase);
procedure SetEchoMode(Value: TcxEditEchoMode);
procedure SetHideSelection(Value: Boolean);
procedure SetInternalUpdating(Value: Boolean);
procedure SetImeMode(Value: TImeMode);
procedure SetImeName(const Value: TImeName);
procedure SetMaxLength(Value: Integer);
procedure SetOEMConvert(Value: Boolean);
procedure SetOnSelChange(Value: TNotifyEvent);
procedure SetPasswordChar(Value: TCaptionChar);
procedure SetReadOnly(Value: Boolean);
procedure SetSelLength(Value: Integer);
procedure SetSelStart(Value: Integer);
procedure SetSelText(Value: string);
// IcxInnerMemo
function GetCaretPos: TPoint;
function GetLines: TStrings;
function GetScrollBars: TScrollStyle;
function GetWantReturns: Boolean;
function GetWantTabs: Boolean;
function GetWordWrap: Boolean;
procedure SetCaretPos(const Value: TPoint);
procedure SetScrollBars(Value: TScrollStyle);
procedure SetWantReturns(Value: Boolean);
procedure SetWantTabs(Value: Boolean);
procedure SetWordWrap(Value: Boolean);
end;
{ TcxRichEditStrings }
TcxRichEditStreamOperation = (esoLoadFrom, esoSaveTo);
TcxRichEditStreamOperationInfo = record
EditStream: TEditStream;
StreamInfo: TRichEditStreamInfo;
TextType: Longint;
end;
TcxRichEditStrings = class(TStrings)
private
FConverter: TConversion;
FRichEdit: TcxRichInnerEdit;
FTextType: Longint;
function CalcStreamTextType(AStreamOperation: TcxRichEditStreamOperation; ACustom: Boolean = False;
ACustomStreamModes: TcxRichEditStreamModes = []): Longint;
function GetAllowStreamModesByStreamOperation(AStreamOperation: TcxRichEditStreamOperation): TcxRichEditStreamModes;
function GetStreamModes: TcxRichEditStreamModes;
protected
function Get(Index: Integer): string; override;
procedure InitConverter(const AFileName: string); virtual;
procedure InitStreamOperation(AStream: TStream;
var AStreamOperationInfo: TcxRichEditStreamOperationInfo;
AStreamOperation: TcxRichEditStreamOperation; ACustom: Boolean = False;
ACustomStreamModes: TcxRichEditStreamModes = []);
function GetCount: Integer; override;
procedure Put(Index: Integer; const S: string); override;
procedure SetUpdateState(Updating: Boolean); override;
procedure SetTextStr(const Value: string); override;
function GetLineBreakString: string; virtual;
property RichEdit: TcxRichInnerEdit read FRichEdit;
public
constructor Create(ARichEdit: TcxRichInnerEdit); virtual;
destructor Destroy; override;
procedure Clear; override;
procedure AddStrings(Strings: TStrings); override;
procedure Delete(Index: Integer); override;
procedure Insert(Index: Integer; const S: string); override;
procedure LoadFromFile(const FileName: string); override;
procedure LoadFromStream(Stream: TStream); override;
procedure SaveToFile(const FileName: string); override;
procedure SaveToStream(Stream: TStream); override;
end;
{ TcxRichInnerEdit }
TcxRichInnerEdit = class(TRichEdit, IUnknown,
IcxContainerInnerControl, IcxInnerEditHelper)
private
FAllowObjects: Boolean;
FAutoSelect: Boolean;
FAutoURLDetect: Boolean;
FURLClickRange: TCharRange;
FURLClickBtn: TMouseButton;
FEchoMode: TcxEditEchoMode;
FEscapePressed: Boolean;
FHelper: TcxRichInnerEditHelper;
FInternalUpdating: Boolean;
FIsEraseBackgroundLocked: Boolean;
FKeyPressProcessed: Boolean;
FLockBoundsCount: Integer;
FMemoMode: Boolean;
FRichEditOle: IUnknown;
FRichEditOleCallback: TObject;
FRichVersion: Integer;
FSavedPlainText: Boolean;
FSelectionBar: Boolean;
FStreamModes: TcxRichEditStreamModes;
FRichLines: TcxRichEditStrings;
FUseCRLF: Boolean;
FOnQueryInsertObject: TcxRichEditQueryInsertObjectEvent;
procedure CloseOleObjects;
// IcxContainerInnerControl
function GetControl: TWinControl;
function GetControlContainer: TcxContainer;
// IcxInnerEditHelper
function GetHelper: IcxCustomInnerEdit;
function GetAutoURLDetect: Boolean;
function GetContainer: TcxCustomRichEdit;
function GetLineCount: Integer;
function GetLineIndex(AIndex: Integer): Integer;
function GetLineLength(AIndex: Integer): Integer;
function GetRichLines: TcxRichEditStrings;
function GetRichEditOle: IcxRichEditOle;
function GetRichEditOleCallBack: TcxRichEditOleCallback;
function GetTextRange(AStartPos, AEndPos: Longint): string;
procedure InternalSetMemoMode(AForcedReload: Boolean = False);
procedure SetAllowObjects(Value: Boolean);
procedure SetAutoURLDetect(Value: Boolean);
procedure SetMemoMode(Value: Boolean);
procedure SetRichLines(Value: TcxRichEditStrings);
procedure SetSelectionBar(Value: Boolean);
procedure SetOleControlActive(AActive: Boolean);
procedure CMDocWindowActivate(var Message: TMessage); message CM_DOCWINDOWACTIVATE;
procedure WMChar(var Message: TWMChar); message WM_CHAR;
procedure WMClear(var Message: TMessage); message WM_CLEAR;
procedure WMCut(var Message: TMessage); message WM_CUT;
procedure WMEraseBkgnd(var Message: TWMEraseBkgnd); message WM_ERASEBKGND;
procedure WMGetDlgCode(var Message: TWMGetDlgCode); message WM_GETDLGCODE;
procedure WMKeyDown(var Message: TWMKeyDown); message WM_KEYDOWN;
procedure WMKillFocus(var Message: TWMKillFocus); message WM_KILLFOCUS;
procedure WMMButtonDown(var Message: TWMMButtonDown); message WM_MBUTTONDOWN;
procedure WMNCCalcSize(var Message: TWMNCCalcSize); message WM_NCCALCSIZE;
procedure WMNCPaint(var Message: TWMNCPaint); message WM_NCPAINT;
procedure WMPaint(var Message: TWMPaint); message WM_PAINT;
procedure WMPaste(var Message: TMessage); message WM_PASTE;
procedure WMSetFocus(var Message: TWMSetFocus); message WM_SETFOCUS;
procedure WMSetFont(var Message: TWMSetFont); message WM_SETFONT;
procedure WMTimer(var Message: TWMTimer); message WM_TIMER;
procedure WMHScroll(var Message: TWMHScroll); message WM_HSCROLL;
procedure WMVScroll(var Message: TWMVScroll); message WM_VSCROLL;
procedure WMWindowPosChanged(var Message: TWMWindowPosChanged); message WM_WINDOWPOSCHANGED;
procedure WMWindowPosChanging(var Message: TWMWindowPosChanging); message WM_WINDOWPOSCHANGING;
procedure EMReplaceSel(var Message: TMessage); message EM_REPLACESEL;
procedure EMSetCharFormat(var Message: TMessage); message EM_SETCHARFORMAT;
procedure EMSetParaFormat(var Message: TMessage); message EM_SETPARAFORMAT;
procedure CMColorChanged(var Message: TMessage); message CM_COLORCHANGED;
procedure CMFontChanged(var Message: TMessage); message CM_FONTCHANGED;
procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
procedure CNNotify(var Message: TWMNotify); message CN_NOTIFY;
procedure CNCommand(var Message: TWMCommand); message CN_COMMAND;
procedure CNKeyDown(var Message: TWMKeyDown); message CN_KEYDOWN;
procedure WMGetText(var Message: TMessage); message WM_GETTEXT;
procedure WMGetTextLength(var Message: TWMGetTextLength); message WM_GETTEXTLENGTH;
procedure WMSetText(var Message: TWMSetText); message WM_SETTEXT;
procedure WMIMEComposition(var Message: TMessage); message WM_IME_COMPOSITION;
procedure EMExLineFromChar(var Message: TMessage); message EM_EXLINEFROMCHAR;
procedure EMLineLength(var Message: TMessage); message EM_LINELENGTH;
protected
procedure BeforeInsertObject(var AAllowInsertObject: Boolean; const ACLSID: TCLSID); dynamic;
procedure Click; override;
procedure CreateParams(var Params: TCreateParams); override;
procedure CreateWindowHandle(const Params: TCreateParams); override;
procedure DestroyWindowHandle; override;
procedure CreateWnd; override;
procedure DblClick; override;
procedure DestroyWnd; override;
procedure DoEnter; override;
procedure DragOver(Source: TObject; X, Y: Integer; State: TDragState;
var Accept: 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 MouseDown(Button: TMouseButton; Shift: TShiftState;
X, Y: Integer); override;
procedure MouseLeave(AControl: TControl); dynamic;
procedure MouseMove(Shift: TShiftState; X, Y: Integer); override;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?