editu2.pas

来自「著名的Handle」· PAS 代码 · 共 1,632 行 · 第 1/4 页

PAS
1,632
字号

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.Panels[3].Text := 'Success'                                  //mh 1999-12-12
    else StatusBar.Panels[3].Text := 'Failure';                                 //mh 1999-12-12
end;

procedure TForm1.btnLoadFromRegClick(Sender: TObject);
begin
  if mwEdit.Highlighter.LoadFromRegistry(HKEY_CURRENT_USER,'\Software\mwEdit team\Highlighters\'+cbxHighlighterSelect.Text) then begin
    StatusBar.Panels[3].Text := 'Success';                                      //mh 1999-12-12
    cbxAttrSelectChange(Self);
  end
  else StatusBar.Panels[3].Text := 'Failure';                                   //mh 1999-12-12
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;
end;

procedure TForm1.mwEditPlaceMark(Sender: TObject; var mark: TMark);             //nmi 1999-10-17
begin
  if cbEnableEventLog.Checked and cbOther.Checked then
    lbEventLog.Items.Insert(0, TimeToStr(Now) + ' OnPlaceMark');
  if mark.IsBookmark then mark.InternalImage := cbInternalImages.Checked;
end;

procedure TForm1.ResetMarkButtons;
var
  marks: TMarks;
  i: integer;
begin
  disableMarkButtons := true;
  try
    mwEdit.Marks.GetMarksForLine(mwEdit.CaretY,marks);
    for i := 0 to 4 do markButtons[i].Down := false;
    for i := 1 to maxMarks do begin
      if not assigned(marks[i]) then break;
      if not marks[i].IsBookmark then
        markButtons[marks[i].ImageIndex-10].Down := true;
    end;
  finally disableMarkButtons := false; end;
end;

procedure TForm1.inpXOffsetChange(Sender: TObject);
begin
  try mwEdit.BookMarkOptions.XOffset := inpXOffset.Value;
  except end;
  mwEdit.SetFocus;
end;

procedure TForm1.RebuildMarks;
var
  i: integer;
begin
  with mwEdit do begin
    BeginUpdate;
    try
      for i := 0 to Marks.Count-1 do
        with Marks[i] do
          if IsBookmark then InternalImage := cbInternalImages.Checked;
    finally EndUpdate; end;
  end;
end;

procedure TForm1.inpExtraLineSpacingChange(Sender: TObject);
begin
  try mwEdit.ExtraLineSpacing := inpExtraLineSpacing.Value;
  except end;
  mwEdit.SetFocus;
end;

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

procedure TForm1.btnPrintClick(Sender: TObject);
var
  Options: TmwPrintOptions;
begin
  Options.SelectedOnly := mwEdit.SelAvail;
  Options.Highlighted := mwEdit.HighLighter <> NIL;
  Options.IgnoreColors := FALSE;                                                //mh 1999-10-04
  Options.WrapLongLines := FALSE; // Not implemented yet!
  Options.Copies := 1;
  Options.PrintRange := Rect(0,0,0,0); // Not using it here.
  Options.MarginUnits := muThousandthsOfInches;
  Options.Margins := Rect(500, 500, 500, 500); // 1/2 inch margins
{ For you metric folks.
  Options.MarginUnits := muMillimeters;
  Options.Margins := Rect(30,30,30,30); // 3 centimeter margins
}
  Options.Header := TStringList.Create;
  Options.Footer := TStringList.Create;
  {begin}                                                                       //hdl 1999-05-11
  try
    Options.Title := 'This is title';

    Options.Header.AddObject('Title: $title$', TObject(hfaCenter));
    Options.Header.AddObject('Printing Time and Date: $time$ $date$',TObject(hfaLeft));
    Options.Header.Add('');

    Options.Footer.Add('');
    Options.Footer.AddObject('Page Number: $pagenum$ Printing Date/Time: $datetime$', TObject(hfaRight));
  {end}                                                                         //hdl 1999-05-11
    // Use whatever font the editor has.
    mwEdit.Print(NIL, Options);
  finally
    Options.Header.Free;
    Options.Footer.Free;
  end;
end;

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

procedure TForm1.mwEditPrintStatus(Sender: TObject;                             //nmi 1999-10-17
  Status: TmwPrintStatus; PageNumber: Integer; var Abort: Boolean);
begin
  if cbEnableEventLog.Checked and cbOther.Checked then
    lbEventLog.Items.Insert(0, TimeToStr(Now) + ' OnPrintStatus');
end;

procedure TForm1.cbLineNumbersClick(Sender: TObject);
begin
  mwEdit.Gutter.ShowLineNumbers := cbLineNumbers.Checked;                       //gp 1999-06-10
  mwEdit.SetFocus;
end;

procedure TForm1.cbLeadingZerosClick(Sender: TObject);

⌨️ 快捷键说明

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