editu2.pas

来自「本人买的<<VC++项目开发实例>>源代码配套光盘.」· PAS 代码 · 共 1,411 行 · 第 1/4 页

PAS
1,411
字号
begin
  mwEdit.OverwriteCaret := TCaretType(cbxOverwriteCaret.ItemIndex);
  mwEdit.SetFocus;
end;

procedure TForm1.cbInsertModeClick(Sender: TObject);
begin
  mwEdit.InsertMode := cbInsertMode.Checked;
  mwEdit.SetFocus;
end;

procedure TForm1.FormShow(Sender: TObject);
const
  first: boolean = true;
begin
  if first then begin
    first := false;
    cbxHighlighterSelect.ItemIndex := 0;
    cbxHighlighterSelectChange(Sender);
    LoadSettings;
  end;
end;

procedure TForm1.FormResize(Sender: TObject);
begin
  inpGutterWidth.MaxValue := mwEdit.Width + 1;
  if inpGutterWidth.Value > inpGutterWidth.MaxValue then
    inpGutterWidth.Value := inpGutterWidth.MaxValue;
end;

procedure TForm1.cbxGutterColorChange(Sender: TObject);
begin
  mwEdit.Gutter.Color := IndexToColor(cbxGutterColor.ItemIndex);                //gp 1999-06-10
  mwEdit.SetFocus;
end;

procedure TForm1.inpGutterWidthChange(Sender: TObject);
begin
  try mwEdit.Gutter.Width := inpGutterWidth.Value;                              //gp 1999-06-10
  except end;
  RecalcLeftMargin;
  mwEdit.SetFocus;
end;

procedure TForm1.cbEnableKeysClick(Sender: TObject);
begin
  mwEdit.BookMarkOptions.EnableKeys := cbEnableKeys.Checked;
  mwEdit.SetFocus;
end;

procedure TForm1.cbGlyphsVisibleClick(Sender: TObject);
begin
  mwEdit.BookMarkOptions.GlyphsVisible := cbGlyphsVisible.Checked;
  mwEdit.SetFocus;
end;

procedure TForm1.inpLeftMarginChange(Sender: TObject);
begin
  try mwEdit.BookMarkOptions.LeftMargin := inpLeftMargin.Value;
  except end;
  mwEdit.SetFocus;
end;

procedure TForm1.inpMaxUndoChange(Sender: TObject);
begin
  try mwEdit.MaxUndo := inpMaxUndo.Value;
  except end;
  mwEdit.SetFocus;
end;

procedure TForm1.inpLineTextKeyPress(Sender: TObject; var Key: Char);
begin
  mwEdit.LineText := inpLineText.Text;
  mwEdit.SetFocus;
end;

procedure TForm1.mwEditClick(Sender: TObject);
begin
  if cbEnableEventLog.Checked and cbMouse.Checked then
    lbEventLog.Items.Insert(0, TimeToStr(Now) + ' OnClick');
  LoadInfo;
end;

procedure TForm1.LoadInfo;
begin
  inpLineText.Text := mwEdit.LineText;
  inpLeftChar.Value := mwEdit.LeftChar;
  inpTopLine.Value := mwEdit.TopLine;
  inpCaretX.Value := mwEdit.CaretX;
  inpCaretY.Value := mwEdit.CaretY;
  outLineCount.Text := IntToStr(mwEdit.LineCount);
  ResetMarkButtons;
end;

procedure TForm1.inpLeftCharChange(Sender: TObject);
begin
  try mwEdit.LeftChar := inpLeftChar.Value;
  except end;
  mwEdit.SetFocus;
end;

procedure TForm1.inpTopLineChange(Sender: TObject);
begin
  try mwEdit.TopLine := inpTopLine.Value;
  except end;
  mwEdit.SetFocus;
end;

procedure TForm1.inpCaretXChange(Sender: TObject);
begin
  try mwEdit.CaretX := inpCaretX.Value;
  except end;
  mwEdit.SetFocus;
end;

procedure TForm1.inpCaretYChange(Sender: TObject);
begin
  try mwEdit.CaretY := inpCaretY.Value;
  except end;
  mwEdit.SetFocus;
end;

procedure TForm1.cbEnableEventLogClick(Sender: TObject);
begin
  mwEdit.SetFocus;
end;

procedure TForm1.mwEditDblClick(Sender: TObject);
begin
  if cbEnableEventLog.Checked and cbMouse.Checked then
    lbEventLog.Items.Insert(0, TimeToStr(Now) + ' OnDblClick');
end;

procedure TForm1.mwEditDragDrop(Sender, Source: TObject; X, Y: Integer);
begin
  if cbEnableEventLog.Checked and cbDrag.Checked then
    lbEventLog.Items.Insert(0, TimeToStr(Now) + ' OnDragDrop');
end;

procedure TForm1.mwEditDragOver(Sender, Source: TObject; X, Y: Integer;
  State: TDragState; var Accept: Boolean);
begin
  if cbEnableEventLog.Checked and cbDrag.Checked then
    lbEventLog.Items.Insert(0, TimeToStr(Now) + ' OnDragOver');
end;

procedure TForm1.mwEditEndDrag(Sender, Target: TObject; X, Y: Integer);
begin
  if cbEnableEventLog.Checked and cbDrag.Checked then
    lbEventLog.Items.Insert(0, TimeToStr(Now) + ' OnEndDrag');
end;

procedure TForm1.mwEditExit(Sender: TObject);
begin
  if cbEnableEventLog.Checked and cbOther.Checked then
    lbEventLog.Items.Insert(0, TimeToStr(Now) + ' OnExit');
end;

procedure TForm1.mwEditKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if cbEnableEventLog.Checked and cbKeyboard.Checked then
    lbEventLog.Items.Insert(0, TimeToStr(Now) + ' OnKeyDown');
end;

procedure TForm1.mwEditKeyPress(Sender: TObject; var Key: Char);
begin
  if cbEnableEventLog.Checked and cbKeyboard.Checked then
    lbEventLog.Items.Insert(0, TimeToStr(Now) + ' OnKeyPress');
end;

procedure TForm1.mwEditPaint(Sender: TObject; ACanvas: TCanvas);
begin
  if cbEnableEventLog.Checked and cbOther.Checked then
    lbEventLog.Items.Insert(0, TimeToStr(Now) + ' OnPaint');
end;

procedure TForm1.mwEditStartDrag(Sender: TObject;
  var DragObject: TDragObject);
begin
  if cbEnableEventLog.Checked and cbDrag.Checked then
    lbEventLog.Items.Insert(0, TimeToStr(Now) + ' OnStartDrag');
end;

{begin}                                                                         //Carlos 1998-27-12

procedure TForm1.cbxAttrSelectChange(Sender: TObject);
var
  Attr: TmwHighLightAttributes;
begin
  Attr := TmwHighLightAttributes.Create('');
  try                                                                           //pv 1999-07-06
    if assigned(mwEdit.Highlighter) then
      Attr.Assign(mwEdit.Highlighter.Attribute[cbxAttrSelect.ItemIndex]);
    cbxAttrForeground.ItemIndex := ColorToIndex(Attr.Foreground);
    cbxAttrBackground.ItemIndex := ColorToIndex(Attr.Background);
    cbStyleBold.Checked := (fsBold in Attr.Style);
    cbStyleItalic.Checked := (fsItalic in Attr.Style);
    cbStyleUnderLine.Checked := (fsUnderline in Attr.Style);
    cbStyleStrikeOut.Checked := (fsStrikeOut in Attr.Style);
  finally                                                                       //pv 1999-07-06
    Attr.Free;
  end;
end;

procedure TForm1.cbxAttrBackgroundChange(Sender: TObject);
var
  Attr: TmwHighLightAttributes;
  AttrStyle: TFontStyles;
begin
  Attr := TmwHighLightAttributes.Create(cbxAttrSelect.Items[cbxAttrSelect.ItemIndex]);
  try                                                                           //mh 1999-09-12
    AttrStyle := [];
    Attr.Foreground := IndexToColor(cbxAttrForeground.ItemIndex);
    Attr.Background := IndexToColor(cbxAttrBackground.ItemIndex);
    if cbStyleBold.Checked then
      Include(AttrStyle, fsBold);
    if cbStyleItalic.Checked then
      Include(AttrStyle, fsItalic);
    if cbStyleUnderLine.Checked then
      Include(AttrStyle, fsUnderline);
    if cbStyleStrikeOut.Checked then
      Include(AttrStyle, fsStrikeOut);
    Attr.Style := AttrStyle;
    if Assigned(mwEdit.HighLighter) then                                        //mh 1999-09-12
      mwEdit.HighLighter.Attribute[cbxAttrSelect.ItemIndex].Assign(Attr);
    mwEdit.Invalidate;
  finally                                                                       //mh 1999-09-12
    Attr.Free;
  end;
end;

procedure TForm1.cbCommentsCClick(Sender: TObject);
var
  CmntSet: CommentStyles;
begin
  CmntSet := [];
  if cbCommentsAnsi.Checked then Include(CmntSet, csAnsiStyle);
  if cbCommentsPas.Checked  then Include(CmntSet, csPasStyle);
  if cbCommentsC.Checked    then Include(CmntSet, csCStyle);
  if cbCommentsAsm.Checked  then Include(CmntSet, csAsmStyle);
  if cbCommentsBas.Checked  then Include(CmntSet, csBasStyle);
  (mwEdit.HighLighter as TmwGeneralSyn).Comments := CmntSet;
  mwEdit.Invalidate;
end;

procedure TForm1.btnKeywordsClick(Sender: TObject);
begin
  form2.lbKeywords.Items.Assign((mwEdit.HighLighter as TmwGeneralSyn).Keywords);
  if Form2.ShowModal = mrOk then
    (mwEdit.HighLighter as TmwGeneralSyn).Keywords := Form2.lbKeywords.Items;
end;

{end}                                                                           //Carlos 1998-27-12

procedure TForm1.mwEditProcessCommand(Sender: TObject;                          //nmi 1999-10-17
  var Command: TmwEditorCommand; var AChar: Char; Data: Pointer);
begin
  if cbEnableEventLog.Checked and cbKeyboard.Checked then
    lbEventLog.Items.Insert(0, TimeToStr(Now) + ' OnProcessCommand');
end;

procedure TForm1.mwEditProcessUserCommand(Sender: TObject;                      //nmi 1999-10-17
  var Command: TmwEditorCommand; var AChar: Char; Data: Pointer);
begin
  if cbEnableEventLog.Checked and cbKeyboard.Checked then
    lbEventLog.Items.Insert(0, TimeToStr(Now) + ' OnProcessUserCommand');
end;

procedure TForm1.btnSaveToRegClick(Sender: TObject);
begin
  if mwEdit.Highlighter.SaveToRegistry(HKEY_CURRENT_USER,'\Software\mwEdit team\Highlighters\'+cbxHighlighterSelect.Text)
    then StatusBar.SimpleText := 'Success'
    else StatusBar.SimpleText := 'Failure';
end;

procedure TForm1.btnLoadFromRegClick(Sender: TObject);
begin
  if mwEdit.Highlighter.LoadFromRegistry(HKEY_CURRENT_USER,'\Software\mwEdit team\Highlighters\'+cbxHighlighterSelect.Text) then begin
    StatusBar.SimpleText := 'Success';
    cbxAttrSelectChange(Self);
  end
  else StatusBar.SimpleText := 'Failure';
end;

procedure TForm1.UpdateKeystrokesList;
var
  x: integer;
begin
  KeyCmdList.Items.BeginUpdate;
  try
    KeyCmdList.Items.Clear;
    for x := 0 to mwEdit.Keystrokes.Count-1 do
    begin
      with KeyCmdList.Items.Add do
      begin
        Caption := EditorCommandToCodeString(mwEdit.Keystrokes[x].Command);
        if mwEdit.Keystrokes[x].ShortCut = 0 then
          SubItems.Add('<none>')
        else
          SubItems.Add(Menus.ShortCutToText(mwEdit.Keystrokes[x].ShortCut));
      end;
    end;
  finally
    KeyCmdList.Items.EndUpdate;
  end;
end;

procedure TForm1.btnEditClick(Sender: TObject);
var
  Dlg: TmwKeystrokesEditorForm;
begin
  Application.CreateForm(TmwKeystrokesEditorForm, Dlg);
  try
    Dlg.Caption := 'mwEdit Keystroke Editor';
    Dlg.Keystrokes := mwEdit.Keystrokes;
    if Dlg.ShowModal = mrOk then
    begin
      mwEdit.Keystrokes := Dlg.Keystrokes;
      UpdateKeystrokesList;
    end;
  finally
    Dlg.Free;
  end;
end;

procedure TForm1.cbInternalImagesClick(Sender: TObject);
begin
  RebuildMarks;
  mwEdit.SetFocus;
end;

procedure TForm1.SpeedButton1Click(Sender: TObject);
var
  mark: TMark;
begin
  if not disableMarkButtons then begin
    with mwEdit do begin
      Marks.ClearLine(CaretY);
      if (Sender as TSpeedButton).Down then begin
        mark := TMark.Create(mwEdit);
        with mark do begin
          Line := CaretY;
          Column := CaretX;
          ImageIndex := (Sender as TSpeedButton).Tag;
          IsBookmark := false;
          Visible := true;
          InternalImage := (BookMarkOptions.BookMarkImages = nil);              //mh 1999-10-04
        end;
        Marks.Place(mark);
      end;
    end;
  end;

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?