⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 editu2.pas

📁 一个mwEdit控件原码,比mwCuuEdit0.92a功能先进.
💻 PAS
📖 第 1 页 / 共 4 页
字号:
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 + -