📄 synedit.pas
字号:
procedure WMEraseBkgnd(var Msg: TMessage); message WM_ERASEBKGND;
procedure WMGetDlgCode(var Msg: TWMGetDlgCode); message WM_GETDLGCODE;
procedure WMHScroll(var Msg: TWMScroll); message WM_HSCROLL;
procedure WMPaste(var Message: TMessage); message WM_PASTE; //pp 2001-08-28
procedure WMCancelMode(var Message:TMessage); message WM_CANCELMODE; //ddh 2001-12-13
{$IFDEF SYN_MBCSSUPPORT}
procedure WMImeComposition(var Msg: TMessage); message WM_IME_COMPOSITION;
procedure WMImeNotify(var Msg: TMessage); message WM_IME_NOTIFY;
{$ENDIF}
procedure WMKillFocus(var Msg: TWMKillFocus); message WM_KILLFOCUS;
procedure WMMouseWheel(var Msg: TMessage); message WM_MOUSEWHEEL;
procedure WMSetCursor(var Msg: TWMSetCursor); message WM_SETCURSOR;
procedure WMSetFocus(var Msg: TWMSetFocus); message WM_SETFOCUS;
procedure WMSize(var Msg: TWMSize); message WM_SIZE;
procedure WMUndo(var Msg: TMessage); message WM_UNDO;
procedure WMVScroll(var Msg: TWMScroll); message WM_VSCROLL;
{$ENDIF}
private
fBlockBegin: TPoint;
fBlockEnd: TPoint;
fCaretX: Integer;
fLastCaretX: integer; //mh 2000-10-19
fCaretY: Integer;
fCharsInWindow: Integer;
fCharWidth: Integer;
fFontDummy: TFont;
{$IFDEF SYN_MBCSSUPPORT}
fImeCount: Integer;
fMBCSStepAside: Boolean;
{$ENDIF}
fInserting: Boolean;
fLines: TStrings;
fOrigLines : TStrings; //ddh 2002-7-15
fOrigUndoList: TSynEditUndoList; //ddh 2002-7-15
fOrigRedoList: TSynEditUndoList; //ddh 2002-7-15
fLinesInWindow: Integer;
fLeftChar: Integer;
fMaxLineWidth: Integer;
fPaintLock: Integer;
fReadOnly: Boolean;
fRightEdge: Integer;
fRightEdgeColor: TColor;
fScrollHintColor: TColor;
fScrollHintFormat: TScrollHintFormat;
FScrollBars: TScrollStyle;
fTextHeight: Integer;
fTextOffset: Integer;
fTopLine: Integer;
fHighlighter: TSynCustomHighlighter;
fSelectedColor: TSynSelectedColor;
fActiveLineColor: TColor;
fUndoList: TSynEditUndoList;
fRedoList: TSynEditUndoList;
fBookMarks: array[0..9] of TSynEditMark;
fMouseDownX: integer;
fMouseDownY: integer;
fBookMarkOpt: TSynBookMarkOpt;
fBorderStyle: TSynBorderStyle;
fHideSelection: boolean;
fMouseWheelAccumulator: integer;
fOverwriteCaret: TSynEditCaretType;
fInsertCaret: TSynEditCaretType;
fCaretOffset: TPoint;
fKeyStrokes: TSynEditKeyStrokes;
fModified: Boolean;
fMarkList: TSynEditMarkList;
fExtraLineSpacing: integer;
fSelectionMode: TSynSelectionMode;
fWantReturns: boolean;
fWantTabs: boolean;
fGutter: TSynGutter;
fTabWidth: integer;
fTextDrawer: TheTextDrawer;
fInvalidateRect: TRect;
fStateFlags: TSynStateFlags;
fOptions: TSynEditorOptions;
fStatusChanges: TSynStatusChanges;
fLastKey: word;
fLastShiftState: TShiftState;
fSearchEngine: TSynEditSearchCustom;
fHookedCommandHandlers: TList;
fKbdHandler: TSynEditKbdHandler;
fFocusList: TList;
fPlugins: TList;
fScrollTimer: TTimer;
fScrollDeltaX, fScrollDeltaY: Integer;
// event handlers
fOnChange: TNotifyEvent;
fOnClearMark: TPlaceMarkEvent;
fOnCommandProcessed: TProcessCommandEvent;
fOnDropFiles: TDropFilesEvent;
fOnGutterClick: TGutterClickEvent;
fOnPaint: TPaintEvent;
fOnPlaceMark: TPlaceMarkEvent;
fOnProcessCommand: TProcessCommandEvent;
fOnProcessUserCommand: TProcessCommandEvent;
fOnReplaceText: TReplaceTextEvent;
fOnSpecialLineColors: TSpecialLineColorsEvent;
fOnContextHelp: TContextHelpEvent;
fOnPaintTransient: TPaintTransient; //GBN 2001-10-23
fOnScroll: TScrollEvent; //GBN 2002-05-14
fOnLineNumber: TLineNumberEvent; //GBN 2002-05-14
fOnGutterGetText: TGutterGetTextEvent;
fOnGutterPaint: TGutterPaintEvent;
fOnStatusChange: TStatusChangeEvent;
fWordWrap: Boolean; //Fiala 2001-12-17
fShowSpecChar: Boolean; //Fiala 2001-12-17
fIsAltSetColumnMode: Boolean; //Fiala 2001-12-17
FPaintTransientLock: Integer; //GBN 2002-03-23
FIsScrolling: Boolean; //ddh 2002-06-22
fChainListAdded: TStringListInsertedEvent; //ddh 2002-7-15
fChainListCleared: TNotifyEvent; //ddh 2002-7-15
fChainListDeleted: TStringListIndexEvent; //ddh 2002-7-15
fChainListInserted: TStringListInsertedEvent; //ddh 2002-7-15
fChainListPutted: TStringListInsertedEvent; //ddh 2002-7-15
fChainLinesChanging: TNotifyEvent; //ddh 2002-7-15
fChainLinesChanged: TNotifyEvent; //ddh 2002-7-15
fChainedEditor: TCustomSynEdit; //ddh 2002-7-15
fChainUndoAdded: TNotifyEvent;
fChainRedoAdded: TNotifyEvent;
{$IFDEF SYN_CLX}
FHScrollBar : TSynEditScrollBar;
FVScrollBar : TSynEditScrollBar;
procedure ScrollEvent(Sender: TObject; ScrollCode: TScrollCode; var ScrollPos: Integer);
{$ENDIF}
procedure BookMarkOptionsChanged(Sender: TObject);
procedure ComputeCaret(X, Y: Integer);
procedure ComputeScroll(X, Y: Integer);
procedure DoBlockIndent;
procedure DoBlockUnindent;
procedure DoHomeKey(Selection:boolean); //home key enhancement
procedure DoLinesDeleted(FirstLine, Count: integer);
procedure DoLinesInserted(FirstLine, Count: integer);
procedure DoShiftTabKey; //shift-tab key handling
procedure DoTabKey;
procedure DoCaseChange(const Cmd : TSynEditorCommand); //DDH 2002-02-11
function FindHookedCmdEvent(AHandlerProc: THookedCommandEvent): integer;
procedure SynFontChanged(Sender: TObject);
function GetBlockBegin: TPoint;
function GetBlockEnd: TPoint;
function GetCanPaste: Boolean;
function GetCanRedo: Boolean;
function GetCanUndo: Boolean;
function GetCaretXY: TPoint;
function GetDisplayX: Integer; //GN 10/16/01
function GetDisplayY: Integer; //GN 10/16/01
function GetDisplayXY: TPoint; //GN 10/16/01
function GetFont: TFont;
function GetHookedCommandHandlersCount: integer;
function GetLineText: string;
function GetMaxUndo: Integer;
function GetSelAvail: Boolean;
function GetSelTabBlock: Boolean;
function GetSelTabLine: Boolean;
function GetSelText: string;
function SynGetText: string;
function GetWordAtCursor : string;
function GetWordAtMouse: string;
procedure GutterChanged(Sender: TObject);
procedure InsertBlock(BB, BE: TPoint; ChangeStr: PChar);
procedure InsertBlockEx(BB, BE: TPoint; ChangeStr: PChar; AddToUndoList: Boolean);
function IsPointInSelection(Value: TPoint): boolean;
function LeftSpaces(const Line: string): Integer;
function LeftSpacesEx(const Line: string; WantTabs: Boolean): Integer;
function GetLeftSpacing(CharCount: Integer; WantTabs: Boolean): String;
procedure LinesChanging(Sender: TObject);
procedure MoveCaretAndSelection(ptBefore, ptAfter: TPoint;
SelectionCommand: boolean);
procedure MoveCaretHorz(DX: integer; SelectionCommand: boolean);
procedure MoveCaretVert(DY: integer; SelectionCommand: boolean);
procedure PluginsAfterPaint(ACanvas: TCanvas; AClip: TRect;
FirstLine, LastLine: integer);
procedure ReadAddedKeystrokes(Reader: TReader);
procedure ReadRemovedKeystrokes(Reader: TReader);
function ScanFrom(Index: integer): integer;
procedure ScrollTimerHandler(Sender: TObject);
procedure SelectedColorsChanged(Sender: TObject);
procedure SetWordWrap(Value: boolean); //Fiala 2001-12-17
procedure SetBlockBegin(Value: TPoint);
procedure SetBlockEnd(Value: TPoint);
procedure SetBorderStyle(Value: TSynBorderStyle);
procedure SetCaretX(Value: Integer);
procedure SetCaretY(Value: Integer);
procedure InternalSetCaretX(Value: Integer);
procedure InternalSetCaretY(Value: Integer);
procedure SetActiveLineColor(Value: TColor); //GBN 05-11-2002, for CurremtLineColor property
procedure SetExtraLineSpacing(const Value: integer);
procedure SetFont(const Value: TFont);
procedure SetGutter(const Value: TSynGutter);
procedure SetGutterWidth(Value: Integer);
procedure SetHideSelection(const Value: boolean);
procedure SetHighlighter(const Value: TSynCustomHighlighter);
procedure SetInsertCaret(const Value: TSynEditCaretType);
procedure SetInsertMode(const Value: boolean);
procedure SetKeystrokes(const Value: TSynEditKeyStrokes);
procedure SetLeftChar(Value: Integer);
procedure SetLines(Value: TStrings);
procedure SetLineText(Value: string);
procedure SetMaxLineWidth(Value: integer);
procedure SetMaxUndo(const Value: Integer);
procedure SetModified(Value: boolean);
procedure SetOptions(Value: TSynEditorOptions);
procedure SetOverwriteCaret(const Value: TSynEditCaretType);
procedure SetRightEdge(Value: Integer);
procedure SetRightEdgeColor(Value: TColor);
procedure SetScrollBars(const Value: TScrollStyle);
procedure SetSearchEngine(Value: TSynEditSearchCustom);
procedure SetSelectionMode(const Value: TSynSelectionMode);
procedure SetSelText(const Value: string);
procedure SetSelTextExternal(const Value: string);
procedure SetTabWidth(Value: integer);
procedure SynSetText(const Value: string);
procedure SetTopLine(Value: Integer);
procedure SetWordBlock(Value: TPoint);
procedure SizeOrFontChanged(bFont: boolean);
procedure TrimmedSetLine(ALine: integer; ALineText: string);
procedure UpdateModifiedStatus; //mr.maX 2003-05-22
procedure UndoRedoAdded(Sender: TObject);
procedure UpdateLastCaretX; //jr 2002-04-26
procedure UpdateScrollBars;
procedure WriteAddedKeystrokes(Writer: TWriter);
procedure WriteRemovedKeystrokes(Writer: TWriter);
protected
{$IFDEF SYN_CLX}
procedure Resize; override;
function GetClientOrigin: TPoint; override;
function GetClientRect: TRect; override;
function WidgetFlags: integer; override;
function DoMouseWheel(Shift: TShiftState; WheelDelta: Integer;
const MousePos: TPoint): Boolean; override;
function NeedKey(Key: Integer; Shift: TShiftState;
const KeyText: WideString): Boolean; override;
{$ELSE}
procedure CreateParams(var Params: TCreateParams); override;
procedure CreateWnd; override;
procedure DestroyWnd; override;
procedure InvalidateRect(const aRect: TRect; aErase: boolean); virtual;
{$ENDIF}
procedure DblClick; override;
procedure DecPaintLock;
procedure DefineProperties(Filer: TFiler); override;
procedure DragCanceled; override;
procedure DragOver(Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean); override;
// procedure FindMatchingBracket; virtual; //GBN 2001-10-23 Moved to public
function GetReadOnly: boolean; virtual;
procedure HighlighterAttrChanged(Sender: TObject);
procedure IncPaintLock;
procedure InitializeCaret;
procedure KeyUp(var Key: Word; Shift: TShiftState); override;
procedure KeyDown(var Key: Word; Shift: TShiftState); override;
procedure KeyPress(var Key: Char); override;
procedure LinesChanged(Sender: TObject); virtual;
procedure ListAdded(Index: integer; const S: String); // mh 2000-10-10
procedure ListCleared(Sender: TObject);
procedure ListDeleted(Index: integer);
procedure ListInserted(Index: integer; const S: String);
procedure ListPutted(Index: integer; const S: String);
//helper procs to chain list commands
procedure ChainListAdded(Index: integer; const S: String); //ddh 2002-7-15
procedure ChainListCleared(Sender: TObject); //ddh 2002-7-15
procedure ChainListDeleted(Index: integer); //ddh 2002-7-15
procedure ChainListInserted(Index: integer; const S: String); //ddh 2002-7-15
procedure ChainListPutted(Index: integer; const S: String); //ddh 2002-7-15
procedure ChainLinesChanging(Sender: TObject); //ddh 2002-7-15
procedure ChainLinesChanged(Sender: TObject); //ddh 2002-7-15
procedure ChainUndoRedoAdded(Sender: TObject);
procedure ListScanRanges(Sender: TObject);
procedure Loaded; override;
procedure MarkListChange(Sender: TObject);
{$IFDEF SYN_MBCSSUPPORT}
procedure MBCSGetSelRangeInLineWhenColumnSelectionMode(const s: string;
var ColFrom, ColTo: Integer);
{$ENDIF}
procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y:
Integer); override;
procedure MouseMove(Shift: TShiftState; X, Y: Integer); override;
procedure MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
override;
procedure NotifyHookedCommandHandlers(AfterProcessing: boolean;
var Command: TSynEditorCommand; var AChar: char; Data: pointer); virtual;
procedure Paint; override;
procedure PaintGutter(AClip: TRect; FirstLine, LastLine: integer); virtual;
procedure PaintTextLines(AClip: TRect; FirstLine, LastLine,
FirstCol, LastCol: integer); virtual;
procedure RecalcCharExtent;
procedure RedoItem; //sbs 2000-11-19
procedure InternalSetCaretXY(Value: TPoint); virtual;
procedure SetCaretXY(Value: TPoint); virtual;
procedure SetCaretXYEx(CallEnsureCursorPos: Boolean; Value: TPoint); virtual;
procedure SetName(const Value: TComponentName); override;
procedure SetReadOnly(Value: boolean); virtual;
procedure SetSelTextPrimitive(PasteMode: TSynSelectionMode; Value: PChar);
procedure SetSelTextPrimitiveEx(PasteMode: TSynSelectionMode; Value: PChar;
AddToUndoList: Boolean);
procedure StatusChanged(AChanges: TSynStatusChanges);
// If the translations requires Data, memory will be allocated for it via a
// GetMem call. The client must call FreeMem on Data if it is not NIL.
function TranslateKeyCode(Code: word; Shift: TShiftState;
var Data: pointer): TSynEditorCommand;
procedure UndoItem; //sbs 2000-11-19
protected
fGutterWidth: Integer;
fInternalImage: TSynInternalImage;
FAlwaysShowCaret: Boolean; //DDH 10/16/01
property WordWrap: boolean read FWordWrap write SetWordWrap; //Fiala 2001-12-17
procedure HideCaret;
procedure ShowCaret;
procedure DoOnClearBookmark(var Mark: TSynEditMark); virtual;
procedure DoOnCommandProcessed(Command: TSynEditorCommand; AChar: char;
Data: pointer); virtual;
// no method DoOnDropFiles, intercept the WM_DROPFILES instead
procedure DoOnGutterClick(Button: TMouseButton; X, Y: integer); virtual;
procedure DoOnPaint; virtual;
procedure DoOnPaintTransientEx(TransientType: TTransientType; Lock: Boolean); virtual;
procedure DoOnPaintTransient(TransientType: TTransientType); virtual; //GBN 2001-10-23
procedure DoOnPlaceMark(var Mark: TSynEditMark); virtual;
procedure DoOnProcessCommand(var Command: TSynEditorCommand;
var AChar: char; Data: pointer); virtual;
function DoOnReplaceText(const ASearch, AReplace: string;
Line, Column: integer): TSynReplaceAction; virtual;
function DoOnSpecialLineColors(Line: integer;
var Foreground, Background: TColor): boolean; virtual;
procedure DoOnStatusChange(Changes: TSynStatusChanges); virtual;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -