📄 jveditorcommon.pas
字号:
procedure CompletionTemplate(var Cancel: Boolean); dynamic;
procedure DoCompletionIdentifier(var Cancel: Boolean);
procedure DoCompletionTemplate(var Cancel: Boolean);
protected
procedure Resize; override;
procedure CreateWnd; override;
procedure CreateParams(var Params: TCreateParams); override;
procedure Loaded; override;
{$IFDEF VisualCLX}
function EventFilter(Sender: QObjectH; Event: QEventH): Boolean; override;
{$ENDIF VisualCLX}
procedure ScrollBarScroll(Sender: TObject; ScrollCode: TScrollCode; var
ScrollPos: Integer);
procedure Scroll(Vert: Boolean; ScrollPos: Integer); dynamic;
procedure KeyDown(var Key: Word; Shift: TShiftState); override;
procedure KeyPress(var Key: Char); override;
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;
function DoMouseWheel(Shift: TShiftState; WheelDelta: Integer;
{$IFDEF VisualCLX} const {$ENDIF} MousePos: TPoint): Boolean; override;
procedure DblClick; override;
procedure GetDlgCode(var Code: TDlgCodes); override;
procedure FocusSet(PrevWnd: HWND); override;
procedure FocusKilled(NextWnd: HWND); override;
procedure DoPaste; dynamic;
procedure DoCopy; dynamic;
procedure DoCut; dynamic;
procedure CursorChanged; override;
procedure FontChanged; override;
function DoEraseBackground(Canvas: TCanvas; Param: Integer): Boolean; override;
{ IFixedPopupIntf method assignment }
procedure IFixedPopupIntf.Cut = ClipboardCut;
procedure IFixedPopupIntf.Copy = ClipboardCopy;
procedure IFixedPopupIntf.Paste = ClipboardPaste;
procedure IFixedPopupIntf.Delete = DeleteSelected;
protected
{ get/set methods for properties }
procedure SetGutterWidth(AWidth: Integer);
procedure SetGutterColor(AColor: TColor);
procedure SetBorderStyle(Value: TBorderStyle);
function GetSelStart: Integer;
procedure SetSelStart(ASelStart: Integer);
procedure SetSelLength(ASelLength: Integer);
function GetSelLength: Integer;
procedure SetSelBlockFormat(Value: TJvSelBlockFormat);
function GetSelBlockFormat: TJvSelBlockFormat;
procedure SetMode(Index: Integer; Value: Boolean);
procedure SetCaretPosition(Index, Pos: Integer);
procedure SetCols(ACols: Integer);
procedure SetRows(ARows: Integer);
procedure SetScrollBars(Value: TScrollStyle);
procedure SetRightMarginVisible(Value: Boolean);
procedure SetRightMargin(Value: Integer);
procedure SetRightMarginColor(Value: TColor);
procedure SetSelBackColor(const Value: TColor);
procedure SetSelForeColor(const Value: TColor);
procedure SetBracketHighlighting(Value: TJvBracketHighlighting);
procedure SetCurrentLineHighlight(const Value: TColor);
function GetPopupMenu: TPopupMenu; override;
function GetLineCount: Integer; virtual; abstract;
function GetLineLength(Index: Integer): Integer; virtual; abstract;
function FindNotBlankCharPosInLine(Line: Integer): Integer; virtual; abstract;
procedure LockUpdate;
procedure UnlockUpdate;
property UpdateLock: Integer read FUpdateLock;
property Compound: Integer read FCompound;
property EditorClient: TJvEditorClient read FEditorClient;
property Gutter: TJvGutter read FGutter;
protected
function GetClipboardBlockFormat: TJvSelBlockFormat;
procedure SetClipboardBlockFormat(const Value: TJvSelBlockFormat);
procedure SetSel(SelX, SelY: Integer);
function IsNewSelection: Boolean;
function IsEmptySelection: Boolean;
procedure PaintSelection;
procedure SetUnSelected;
procedure RemoveSelectedBlock;
procedure PersistentBlocksSetUnSelected;
procedure SetSelUpdateRegion(BegY, EndY: Integer);
procedure AdjustSelLineMode(Restore: Boolean);
procedure AdjustPersistentBlockSelection(X, Y: Integer;
Mode: TAdjustPersistentBlockMode; Args: array of Integer);
protected
LineAttrs: TLineAttrs;
procedure Paint; override;
procedure PaintLine(Line: Integer; ColBeg, ColEnd: Integer); overload;
procedure PaintLineText(Line: Integer; ColBeg, ColEnd: Integer;
var ColPainted: Integer); virtual; abstract;
procedure GetBracketHighlightAttr(Line: Integer; var Attrs: TLineAttrs); virtual;
procedure HighlightBrackets; virtual;
procedure GetBracketHighlightingWords(var Direction: Integer;
const Start: AnsiString; var Stop: AnsiString; var CaseSensitive: Boolean); virtual;
function FontCacheFind(LA: TLineAttr): TFont;
procedure FontCacheClear;
procedure InsertChar(const Key: Word); virtual; abstract;
procedure DrawRightMargin;
procedure Mouse2Cell(X, Y: Integer; var CX, CY: Integer);
procedure Mouse2Caret(X, Y: Integer; var CX, CY: Integer);
procedure CaretCoord(X, Y: Integer; var CX, CY: Integer);
function PosFromMouse(X, Y: Integer): Integer;
procedure SetCaretInternal(X, Y: Integer);
procedure NotUndoable;
procedure NotRedoable;
procedure ChangeBookmark(Bookmark: TBookmarkNum; Valid: Boolean);
procedure BeginRecord;
procedure EndRecord(var AMacro: TMacro);
procedure PlayMacro(const AMacro: TMacro);
function DoCommand(ACommand: TEditCommand; var X, Y: Integer;
var CaretUndo: Boolean): Boolean; virtual; abstract;
property LineCount: Integer read GetLineCount;
property LineLength[Index: Integer]: Integer read GetLineLength;
property Completion: TJvCompletionBase read FCompletion write FCompletion;
public
Bookmarks: TBookmarks;
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
procedure Assign(Source: TPersistent); override;
procedure SetLeftTop(ALeftCol, ATopRow: Integer);
procedure PaintLine(Line: Integer); overload;
function CanUndo: Boolean; { IFixedPopupIntf }
function CanRedo: Boolean;
function CanCopy: Boolean; { IFixedPopupIntf }
function CanPaste: Boolean; { IFixedPopupIntf }
function CanCut: Boolean; { IFixedPopupIntf }
function CanSelectAll: Boolean; { IFixedPopupIntf }
procedure SelectAll; { IFixedPopupIntf }
function HasSelection: Boolean; { IFixedPopupIntf }
procedure ClipboardCopy; dynamic; abstract;
procedure ClipboardPaste; dynamic; abstract;
procedure ClipboardCut; dynamic;
procedure DeleteSelected; dynamic; abstract;
procedure ClearSelection; dynamic;
procedure Undo;
procedure Redo; // not implemented yet
procedure SelectRange(BegX, BegY, EndX, EndY: Integer);
function CalcCellRect(X, Y: Integer): TRect;
procedure SetCaret(X, Y: Integer);
procedure CaretFromPos(Pos: Integer; var X, Y: Integer);
function PosFromCaret(X, Y: Integer): Integer;
procedure PaintCaret(bShow: Boolean);
function GetTextLen: Integer;
procedure SelectWordOnCaret; virtual; abstract;
procedure BeginUpdate;
procedure EndUpdate;
procedure MakeRowVisible(ARow: Integer);
procedure Command(ACommand: TEditCommand); virtual;
procedure PostCommand(ACommand: TEditCommand);
procedure IndentColumns(X: Integer; BegY, EndY: Integer); virtual; abstract;
procedure UnIndentColumns(X: Integer; BegY, EndY: Integer); virtual; abstract;
procedure IndentLines(UnIndent: Boolean; BegY, EndY: Integer);
procedure IndentSelLines(UnIndent: Boolean);
procedure BeginCompound;
procedure EndCompound;
procedure PostBeginCompound;
procedure PostEndCompound;
property LeftCol: Integer read FLeftCol;
property TopRow: Integer read FTopRow;
property VisibleColCount: Integer read FVisibleColCount;
property VisibleRowCount: Integer read FVisibleRowCount;
property LastVisibleCol: Integer read FLastVisibleCol;
property LastVisibleRow: Integer read FLastVisibleRow;
property Cols: Integer read FCols write SetCols;
property Rows: Integer read FRows write SetRows;
property CaretX: Integer index 0 read FCaretX write SetCaretPosition;
property CaretY: Integer index 1 read FCaretY write SetCaretPosition;
property Modified: Boolean read FModified write FModified;
property SelBlockFormat: TJvSelBlockFormat read GetSelBlockFormat write SetSelBlockFormat default bfNonInclusive;
property SelStart: Integer read GetSelStart write SetSelStart;
property SelLength: Integer read GetSelLength write SetSelLength;
property Keyboard: TJvKeyboard read FKeyboard;
property CellRect: TCellRect read FCellRect;
property UndoBuffer: TJvUndoBuffer read FUndoBuffer;
property GroupUndo: Boolean read FGroupUndo write FGroupUndo default True;
property UndoAfterSave: Boolean read FUndoAfterSave write FUndoAfterSave;
property Recording: Boolean read FRecording;
property UseFixedPopup: Boolean read FUseFixedPopup write FUseFixedPopup;
property LineInformations: TJvLineInformationList read FLineInformations;
public
{ published in descendants }
property BeepOnError: Boolean read FBeepOnError write FBeepOnError default True;
property BorderStyle: TBorderStyle read FBorderStyle write SetBorderStyle default bsSingle;
property ScrollBars: TScrollStyle read FScrollBars write SetScrollBars default ssBoth;
property Cursor default crIBeam;
property Color default clWindow;
property GutterWidth: Integer read FGutterWidth write SetGutterWidth;
property GutterColor: TColor read FGutterColor write SetGutterColor default clBtnFace;
property RightMarginVisible: Boolean read FRightMarginVisible write SetRightMarginVisible default True;
property RightMargin: Integer read FRightMargin write SetRightMargin default 80;
property RightMarginColor: TColor read FRightMarginColor write SetRightMarginColor default clBtnFace;
property InsertMode: Boolean index 0 read FInsertMode write SetMode default True;
property ReadOnly: Boolean index 1 read FReadOnly write SetMode default False;
property DoubleClickLine: Boolean read FDoubleClickLine write FDoubleClickLine default False;
property TabStops: AnsiString read FTabStops write FTabStops;
property SmartTab: Boolean read FSmartTab write FSmartTab default True;
property BackSpaceUnindents: Boolean read FBackSpaceUnindents write FBackSpaceUnindents default True;
property AutoIndent: Boolean read FAutoIndent write FAutoIndent default True;
property KeepTrailingBlanks: Boolean read FKeepTrailingBlanks write FKeepTrailingBlanks default False;
property CursorBeyondEOF: Boolean read FCursorBeyondEOF write FCursorBeyondEOF default False;
property BlockOverwrite: Boolean read FBlockOverwrite write FBlockOverwrite default True;
property PersistentBlocks: Boolean read FPersistentBlocks write FPersistentBlocks default False;
property BracketHighlighting: TJvBracketHighlighting read FBracketHighlighting write SetBracketHighlighting;
property SelForeColor: TColor read FSelForeColor write SetSelForeColor;
property SelBackColor: TColor read FSelBackColor write SetSelBackColor;
property HideCaret: Boolean read FHideCaret write FHideCaret default False;
property CurrentLineHighlight: TColor read FCurrentLineHighlight write SetCurrentLineHighlight default clNone;
property OnChangeStatus: TNotifyEvent read FOnChangeStatus write FOnChangeStatus;
property OnScroll: TNotifyEvent read FOnScroll write FOnScroll;
property OnResize: TNotifyEvent read FOnResize write FOnResize;
property OnKeyDown;
property OnKeyPress;
property OnKeyUp;
property OnChange: TNotifyEvent read FOnChange write FOnChange;
property OnSelectionChange: TNotifyEvent read FOnSelectionChange write FOnSelectionChange;
property OnMouseDown;
property OnMouseMove;
property OnMouseUp;
property OnDblClick: TNotifyEvent read FOnDblClick write FOnDblClick;
property OnPaintGutter: TOnPaintGutter read FOnPaintGutter write FOnPaintGutter;
property OnGutterClick: TOnGutterClick read FOnGutterClick write FOnGutterClick;
property OnGutterDblClick: TOnGutterClick read FOnGutterDblClick write FOnGutterDblClick;
property OnCompletionIdentifier: TOnCompletion read FOnCompletionIdentifier write FOnCompletionIdentifier;
property OnCompletionTemplate: TOnCompletion read FOnCompletionTemplate write FOnCompletionTemplate;
property OnCompletionDrawItem: TDrawItemEvent read FOnCompletionDrawItem write FOnCompletionDrawItem;
property OnCompletionMeasureItem: TMeasureItemEvent read FOnCompletionMeasureItem write FOnCompletionMeasureItem;
property DockManager;
end;
TJvCompletionBase = class(TPersistent)
private
FJvEditor: TJvCustomEditorBase;
FPopupList: TListBox;
FItemIndex: Integer;
FMode: TCompletionList;
FDefMode: TCompletionList;
FItemHeight: Integer;
FTimer: TTimer;
FEnabled: Boolean;
FVisible: Boolean;
FDropDownCount: Integer;
FDropDownWidth: Integer;
FListBoxStyle: TListBoxStyle;
procedure OnTimer(Sender: TObject);
function GetItemIndex: Integer;
procedure SetItemIndex(AValue: Integer);
function GetInterval: Cardinal;
procedure SetInterval(AValue: Cardinal);
function GetItems: TStrings;
protected
function DoKeyDown(Key: Word; Shift: TShiftState): Boolean; virtual;
procedure DoKeyPress(Key: Char); virtual;
procedure FindSelItem(var Eq: Boolean); virtual; abstract;
procedure MakeItems; virtual; abstract;
procedure ReplaceWordItemIndex(SubStrStart: Integer); virtual; abstract;
function GetTemplateCount: Integer; virtual; abstract;
function GetIdentifierCount: Integer; virtual; abstract;
function GetAnsiSeparator: AnsiString; virtual; abstract;
function GetItemCount: Integer;
property JvEditor: TJvCustomEditorBase read FJvEditor;
property Items: TStrings read GetItems;
public
constructor Create(AJvEditor: TJvCustomEditorBase);
destructor Destroy; override;
procedure DropDown(const AMode: TCompletionList; const ShowAlways: Boolean);
procedure DoCompletion(const AMode: TCompletionList);
procedure CloseUp(const Apply: Boolean);
procedure SelectItem;
property ItemIndex: Integer read GetItemIndex write SetItemIndex;
property Visible: Boolean read FVisible write FVisible;
property Mode: TCompletionList read FMode write FMode;
published
property DropDownCount: Integer read FDropDownCount write FDropDownCount default 6;
property DropDownWidth: Integer read FDropDownWidth write FDropDownWidth default 300;
property Enabled: Boolean read FEnabled write FEnabled default False;
property ItemHeight: Integer read FItemHeight write FItemHeight;
property Interval: Cardinal read GetInterval write SetInterval;
property ListBoxStyle: TListBoxStyle read FListBoxStyle write FListBoxStyle;
end;
//=== Highligther Editor =====================================================
type
TJvHighlighter = (hlNone, hlPascal, hlCBuilder, hlSql, hlPython, hlJava, hlVB,
hlHtml, hlPerl, hlIni, hlCocoR, hlPhp, hlNQC, hlCSharp,
hlSyntaxHighlighter);
TLongTokenType = 0..255;
const
lgNone = TLongTokenType(0);
lgComment1 = TLongTokenType(1);
lgComment2 = TLongTokenType(2);
lgString = TLongTokenType(4);
lgTag = TLongTokenType(5);
lgPreproc = TLongTokenType(6);
lgPreproc1 = lgPreproc;
lgPreproc2 = TLongTokenType(7);
lgUndefined = High(TLongTokenType);
type
TDelphiColor = record
ForeColor, BackColor: TColor;
Style: TFontStyles;
end;
const
DelphiColor_Comment: TDelphiColor = (ForeColor: clNavy; BackColor: clWindow; Style: [fsItalic]);
DelphiColor_Preproc: TDelphiColor = (ForeColor: clGreen; BackColor: clWindow; Style: []);
DelphiColor_Number: TDelphiColor = (ForeColor: clNavy; BackColor: clWindow; Style: []);
DelphiColor_Strings: TDelphiColor = (ForeColor: clBlue; BackColor: clWindow; Style: []);
DelphiColor_Symbol: TDelphiColor = (ForeColor: clBlack; BackColor: clWindow; Style: []);
DelphiColor_Reserved: TDelphiColor = (ForeColor: clBlack; BackColor: clWindow; Style: [fsBold]);
DelphiColor_Identifier: TDelphiColor = (ForeColor: clBlack; BackColor: clWindow; Style: []);
DelphiColor_PlainText: TDelphiColor = (ForeColor: clWindowText; BackColor: clWindow; Style: []);
type
TJvSymbolColor = class(TPersistent)
private
FStyle: TFontStyles;
FForeColor: TColor;
FBackColor: TColor;
public
constructor Create;
procedure SetColor(const ForeColor, BackColor: TColor; const Style: TFontStyles);
procedure Assign(Source: TPersistent); override;
published
property Style: TFontStyles read FStyle write FStyle default [];
property ForeColor: TColor read FForeColor write FForeColor {default clWindowText}; // disabled, otherwise the default values are ignored
property BackColor: TColor read FBackColor write FBackColor {default clWindow};
end;
TJvColors = class(TPersistent)
private
FComment: TJvSymbolColor;
FNumber: TJvSymbolColor;
FString: TJvSymbolColor;
FSymbol: TJvSymbolColor;
FReserved: TJvSymbolColor;
FIdentifier: TJvSymbolColor;
FPreproc: TJvSymbolColor;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -