📄 editu2.pas
字号:
procedure TDemoMainForm.inpTabWidthChange(Sender: TObject);
begin
try SynEditor.TabWidth := inpTabWidth.Value;
except end;
SynEditor.SetFocus;
end;
procedure TDemoMainForm.cbDragDropEditClick(Sender: TObject);
begin
SynEditor.SetOptionFlag(eoDragDropEditing, cbDragDropEdit.Checked);
SynEditor.SetFocus;
end;
procedure TDemoMainForm.cbxInsertCaretChange(Sender: TObject);
begin
SynEditor.InsertCaret := TSynEditCaretType(cbxInsertCaret.ItemIndex);
SynEditor.SetFocus;
end;
procedure TDemoMainForm.cbxOverwriteCaretChange(Sender: TObject);
begin
SynEditor.OverwriteCaret := TSynEditCaretType(cbxOverwriteCaret.ItemIndex);
SynEditor.SetFocus;
end;
procedure TDemoMainForm.cbInsertModeClick(Sender: TObject);
begin
SynEditor.InsertMode := cbInsertMode.Checked;
SynEditor.SetFocus;
end;
procedure TDemoMainForm.cbxGutterColorChange(Sender: TObject);
begin
SynEditor.Gutter.Color := IndexToColor(cbxGutterColor.ItemIndex);
SynEditor.SetFocus;
end;
procedure TDemoMainForm.inpGutterWidthChange(Sender: TObject);
begin
try SynEditor.Gutter.Width := inpGutterWidth.Value;
except end;
RecalcLeftMargin;
SynEditor.SetFocus;
end;
procedure TDemoMainForm.inpDigitCountChange(Sender: TObject);
begin
try SynEditor.Gutter.DigitCount := inpDigitCount.Value;
except end;
RecalcLeftMargin;
SynEditor.SetFocus;
end;
procedure TDemoMainForm.inpLeftOffsetChange(Sender: TObject);
begin
try SynEditor.Gutter.LeftOffset := inpLeftOffset.Value;
except end;
RecalcLeftMargin;
SynEditor.SetFocus;
end;
procedure TDemoMainForm.inpRightOffsetChange(Sender: TObject);
begin
try SynEditor.Gutter.RightOffset := inpRightOffset.Value;
except end;
RecalcLeftMargin;
SynEditor.SetFocus;
end;
procedure TDemoMainForm.cbLineNumbersClick(Sender: TObject);
begin
SynEditor.Gutter.ShowLineNumbers := cbLineNumbers.Checked;
SynEditor.SetFocus;
end;
procedure TDemoMainForm.cbLeadingZerosClick(Sender: TObject);
begin
SynEditor.Gutter.LeadingZeros := cbLeadingZeros.Checked;
SynEditor.SetFocus;
end;
procedure TDemoMainForm.cbZeroStartClick(Sender: TObject);
begin
SynEditor.Gutter.ZeroStart := cbZeroStart.Checked;
SynEditor.SetFocus;
end;
procedure TDemoMainForm.cbAutoSizeClick(Sender: TObject);
begin
SynEditor.Gutter.AutoSize := cbAutoSize.Checked;
SynEditor.SetFocus;
end;
procedure TDemoMainForm.cbGutterVisibleClick(Sender: TObject);
begin
SynEditor.Gutter.Visible := cbGutterVisible.Checked;
SynEditor.SetFocus;
end;
procedure TDemoMainForm.cbUseFontStyleClick(Sender: TObject);
begin
SynEditor.Gutter.UseFontStyle := cbUseFontStyle.Checked;
SynEditor.SetFocus;
end;
procedure TDemoMainForm.cbEnableKeysClick(Sender: TObject);
begin
SynEditor.BookMarkOptions.EnableKeys := cbEnableKeys.Checked;
SynEditor.SetFocus;
end;
procedure TDemoMainForm.cbGlyphsVisibleClick(Sender: TObject);
begin
SynEditor.BookMarkOptions.GlyphsVisible := cbGlyphsVisible.Checked;
SynEditor.SetFocus;
end;
procedure TDemoMainForm.cbInternalImagesClick(Sender: TObject);
begin
RebuildMarks;
SynEditor.SetFocus;
end;
procedure TDemoMainForm.inpLeftMarginChange(Sender: TObject);
begin
try SynEditor.BookMarkOptions.LeftMargin := inpLeftMargin.Value;
except end;
SynEditor.SetFocus;
end;
procedure TDemoMainForm.inpXOffsetChange(Sender: TObject);
begin
try SynEditor.BookMarkOptions.XOffset := inpXOffset.Value;
except end;
SynEditor.SetFocus;
end;
procedure TDemoMainForm.btnUndoClick(Sender: TObject);
begin
SynEditor.Undo;
SynEditor.SetFocus;
end;
procedure TDemoMainForm.btnRedoClick(Sender: TObject);
begin
SynEditor.Redo;
SynEditor.SetFocus;
end;
procedure TDemoMainForm.inpMaxUndoChange(Sender: TObject);
begin
try SynEditor.MaxUndo := inpMaxUndo.Value;
except end;
SynEditor.SetFocus;
end;
procedure TDemoMainForm.SynEditorChange(Sender: TObject);
begin
btnUndo.Enabled := SynEditor.CanUndo;
btnRedo.Enabled := SynEditor.CanRedo;
outLineCount.Text := IntToStr(SynEditor.Lines.Count);
if cbOther.Checked then
LogEvent('OnChange');
end;
procedure TDemoMainForm.SynEditorClick(Sender: TObject);
begin
if cbMouse.Checked then
LogEvent('OnClick');
end;
procedure TDemoMainForm.SynEditorCommandProcessed(Sender: TObject;
var Command: TSynEditorCommand; var AChar: Char; Data: Pointer);
begin
if cbKeyboard.Checked then
LogEvent('OnCommandProcessed');
end;
procedure TDemoMainForm.SynEditorDblClick(Sender: TObject);
begin
if cbMouse.Checked then
LogEvent('OnDblClick');
end;
procedure TDemoMainForm.SynEditorDragDrop(Sender, Source: TObject; X,
Y: Integer);
begin
if cbDrag.Checked then
LogEvent('OnDragDrop');
end;
procedure TDemoMainForm.SynEditorDragOver(Sender, Source: TObject; X,
Y: Integer; State: TDragState; var Accept: Boolean);
begin
if cbDrag.Checked then
LogEvent('OnDragOver');
end;
procedure TDemoMainForm.SynEditorDropFiles(Sender: TObject; X, Y: Integer;
AFiles: TStrings);
begin
if cbOther.Checked then
LogEvent('OnDropFiles');
if AFiles.Count >= 1 then
LoadFile(AFiles[0], FALSE);
end;
procedure TDemoMainForm.SynEditorEndDrag(Sender, Target: TObject; X,
Y: Integer);
begin
if cbDrag.Checked then
LogEvent('OnEndDrag');
end;
procedure TDemoMainForm.SynEditorEnter(Sender: TObject);
begin
if cbOther.Checked then
LogEvent('OnEnter');
end;
procedure TDemoMainForm.SynEditorExit(Sender: TObject);
begin
if cbOther.Checked then
LogEvent('OnExit');
end;
procedure TDemoMainForm.SynEditorKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if cbKeyboard.Checked then
LogEvent('OnKeyDown');
end;
procedure TDemoMainForm.SynEditorKeyPress(Sender: TObject; var Key: Char);
begin
if cbKeyboard.Checked then
LogEvent('OnKeyPress');
end;
procedure TDemoMainForm.SynEditorKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if cbKeyboard.Checked then
LogEvent('OnKeyUp');
end;
procedure TDemoMainForm.SynEditorMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
if cbMouse.Checked then
LogEvent('OnMouseDown');
end;
procedure TDemoMainForm.SynEditorMouseMove(Sender: TObject;
Shift: TShiftState; X, Y: Integer);
begin
if cbMouse.Checked then
LogEvent('OnMouseMove');
end;
procedure TDemoMainForm.SynEditorMouseUp(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
if cbMouse.Checked then
LogEvent('OnMouseUp');
end;
procedure TDemoMainForm.SynEditorPaint(Sender: TObject; ACanvas: TCanvas);
begin
if cbOther.Checked then
LogEvent('OnPaint');
end;
procedure TDemoMainForm.SynEditorPlaceBookmark(Sender: TObject;
var Mark: TSynEditMark);
begin
if cbOther.Checked then
LogEvent('OnPlaceBookmark');
if Mark.IsBookmark then
Mark.InternalImage := cbInternalImages.Checked;
end;
procedure TDemoMainForm.SynEditorProcessCommand(Sender: TObject;
var Command: TSynEditorCommand; var AChar: Char; Data: Pointer);
begin
if cbKeyboard.Checked then
LogEvent('OnProcessCommand');
end;
procedure TDemoMainForm.SynEditorProcessUserCommand(Sender: TObject;
var Command: TSynEditorCommand; var AChar: Char; Data: Pointer);
begin
if cbKeyboard.Checked then
LogEvent('OnProcessUserCommand');
end;
procedure TDemoMainForm.SynEditorReplaceText(Sender: TObject;
const ASearch, AReplace: String; Line, Column: Integer;
var Action: TSynReplaceAction);
begin
if cbOther.Checked then
LogEvent('OnReplaceText');
end;
procedure TDemoMainForm.SynEditorStartDrag(Sender: TObject;
var DragObject: TDragObject);
begin
if cbDrag.Checked then
LogEvent('OnStartDrag');
end;
procedure TDemoMainForm.SynEditorStatusChange(Sender: TObject;
Changes: TSynStatusChanges);
const
ModifiedStrs: array[boolean] of string = ('', 'Modified');
InsertModeStrs: array[boolean] of string = ('Overwrite', 'Insert');
var
p: TBufferCoord;
Token: string;
Attri: TSynHighlighterAttributes;
begin
// Note: scAll for new file loaded
// caret position has changed
if Changes * [scAll, scCaretX, scCaretY] <> [] then begin
p := SynEditor.CaretXY;
// Detach OnChange events from spin edits,
// because re-setting caret position clears selection
inpCaretX.OnChange := nil;
inpCaretY.OnChange := nil;
inpCaretX.Value := p.Char;
inpCaretY.Value := p.Line;
// Re-attach OnChange events to spin edits
inpCaretX.OnChange := inpCaretXChange;
inpCaretY.OnChange := inpCaretYChange;
inpLineText.Text := SynEditor.LineText;
outLineCount.Text := IntToStr(SynEditor.Lines.Count);
Statusbar.Panels[0].Text := Format('%6d:%3d', [p.Line, p.Char]);
ResetMarkButtons;
end;
// horz scroll position has changed
if Changes * [scAll, scLeftChar] <> [] then
inpLeftChar.Value := SynEditor.LeftChar;
// vert scroll position has changed
if Changes * [scAll, scTopLine] <> [] then
inpTopLine.Value := SynEditor.TopLine;
// InsertMode property has changed
if Changes * [scAll, scInsertMode, scReadOnly] <> [] then begin
if SynEditor.ReadOnly then
Statusbar.Panels[2].Text := 'ReadOnly'
else
Statusbar.Panels[2].Text := InsertModeStrs[SynEditor.InsertMode];
end;
// Modified property has changed
if Changes * [scAll, scModified] <> [] then
Statusbar.Panels[1].Text := ModifiedStrs[SynEditor.Modified];
// selection has changed
if Changes * [scAll, scSelection] <> [] then
cbExportSelected.Enabled := SynEditor.SelAvail;
// select highlighter attribute at caret
if (SynEditor.Highlighter <> nil) and (Changes * [scAll, scCaretX, scCaretY] <> [])
then begin
if not SynEditor.GetHighlighterAttriAtRowCol(SynEditor.CaretXY, Token,
Attri)
then
Attri := SynEditor.Highlighter.WhitespaceAttribute;
if Assigned(Attri) then begin
cbxAttrSelect.ItemIndex := cbxAttrSelect.Items.IndexOf(Attri.Name);
cbxAttrSelectChange(Self);
end;
end;
end;
procedure TDemoMainForm.cbxExporterSelectChange(Sender: TObject);
begin
UpdateCanExport;
end;
procedure TDemoMainForm.inpLeftCharChange(Sender: TObject);
begin
try SynEditor.LeftChar := inpLeftChar.Value;
except end;
SynEditor.SetFocus;
end;
procedure TDemoMainForm.inpTopLineChange(Sender: TObject);
begin
try SynEditor.TopLine := inpTopLine.Value;
except end;
SynEditor.SetFocus;
end;
procedure TDemoMainForm.inpCaretXChange(Sender: TObject);
begin
try SynEditor.CaretX := inpCaretX.Value;
except end;
SynEditor.SetFocus;
end;
procedure TDemoMainForm.inpCaretYChange(Sender: TObject);
begin
try SynEditor.CaretY := inpCaretY.Value;
except end;
SynEditor.SetFocus;
end;
procedure TDemoMainForm.cbEnableEventLogClick(Sender: TObject);
begin
SynEditor.SetFocus;
end;
procedure TDemoMainForm.btnClearClick(Sender: TObject);
begin
lbEventLog.Clear;
end;
procedure TDemoMainForm.cbxHighlighterSelectChange(Sender: TObject);
var
i: integer;
HasHighlighter: boolean;
begin
SynEditor.Highlighter := nil;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -