editu2.pas

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

PAS
1,411
字号
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);
begin
  mwEdit.Gutter.LeadingZeros := cbLeadingZeros.Checked;                         //gp 1999-06-10
  mwEdit.SetFocus;
end;

procedure TForm1.cbZeroStartClick(Sender: TObject);
begin
  mwEdit.Gutter.ZeroStart := cbZeroStart.Checked;                               //gp 1999-06-10
  mwEdit.SetFocus;
end;

procedure TForm1.mwEditMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if cbEnableEventLog.Checked and cbMouse.Checked then
    lbEventLog.Items.Insert(0, TimeToStr(Now) + ' OnMouseDown');
end;

procedure TForm1.mwEditMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  if cbEnableEventLog.Checked and cbMouse.Checked then
    lbEventLog.Items.Insert(0, TimeToStr(Now) + ' OnMouseMove');
end;

procedure TForm1.mwEditMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if cbEnableEventLog.Checked and cbMouse.Checked then
    lbEventLog.Items.Insert(0, TimeToStr(Now) + ' OnMouseUp');
end;

procedure TForm1.btnClearClick(Sender: TObject);
begin
  lbEventLog.Clear;
end;

procedure TForm1.cbAutoIndentClick(Sender: TObject);
begin
//  mwEdit.Autoindent := cbAutoindent.Checked;                                  //mh 1999-10-04
  mwEdit.SetOptionFlag(mweoAutoIndent, cbAutoIndent.Checked);
  mwEdit.SetFocus;
end;

procedure TForm1.cbxREColorChange(Sender: TObject);
begin
  mwEdit.RightEdgeColor := IndexToColor(cbxREColor.ItemIndex);
  mwEdit.SetFocus;
end;

procedure TForm1.cbHalfPageScrollClick(Sender: TObject);
begin
//  mwEdit.HalfpageScroll := cbHalfpageScroll.Checked;                          //mh 1999-10-04
//  mwEdit.SetOptionFlag(mweoHalfpageScroll, cbAutoindent.Checked);             //nmi 1999-11-01
  mwEdit.SetOptionFlag(mweoHalfpageScroll, cbHalfPageScroll.Checked);
  mwEdit.SetFocus;
end;

procedure TForm1.inpTabWidthChange(Sender: TObject);
begin
//  try mwEdit.TabIndent := inpTabIndent.Value;                                 //mh 1999-10-04
  try mwEdit.TabWidth := inpTabWidth.Value;
  except end;
  mwEdit.SetFocus;
end;

procedure TForm1.cbWantTabsClick(Sender: TObject);
begin
  mwEdit.WantTabs := cbWantTabs.Checked;
  mwEdit.SetFocus;
end;

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

procedure TForm1.inpDigitCountChange(Sender: TObject);
begin
  try mwEdit.Gutter.DigitCount := inpDigitCount.Value;
  except end;
  RecalcLeftMargin;
  mwEdit.SetFocus;
end;

procedure TForm1.inpLeftOffsetChange(Sender: TObject);
begin
  try mwEdit.Gutter.LeftOffset := inpLeftOffset.Value;
  except end;
  RecalcLeftMargin;
  mwEdit.SetFocus;
end;

procedure TForm1.inpRightOffsetChange(Sender: TObject);
begin
  try mwEdit.Gutter.RightOffset := inpRightOffset.Value;
  except end;
  RecalcLeftMargin;
  mwEdit.SetFocus;
end;

procedure TForm1.RecalcLeftMargin;
begin
  inpLeftMargin.MaxValue := mwEdit.Gutter.Width;
  if inpLeftMargin.Value > inpLeftMargin.MaxValue then
    inpLeftMargin.Value := inpLeftMargin.MaxValue;
end;

procedure TForm1.cbxExporterSelectChange(Sender: TObject);
begin
  btnExportToClip.Enabled := cbxExporterSelect.ItemIndex > 0;
  btnExportAllToClip.Enabled := btnExportToClip.Enabled;
end;

procedure TForm1.btnExportToClipClick(Sender: TObject);
var
  i: integer;
begin
  mwEdit.Highlighter.Exporter := nil;
  for i := 0 to ComponentCount-1 do
    if (Components[i] is TmwCustomExport) and
       ((Components[i] as TmwCustomExport).ExporterName = cbxExporterSelect.Text) then begin
      mwEdit.Highlighter.Exporter := (Components[i] as TmwCustomExport);
      break;
    end;
  if assigned(mwEdit.Highlighter.Exporter) then begin
    if Sender = btnExportAllToClip then mwEdit.SelectAll;
    TmwCustomExport(mwEdit.Highlighter.Exporter).CopyToClipboardFormat(mwEdit,mwEdit.Highlighter,CF_TEXT);
    mwEdit.Highlighter.Exporter := nil;
    if Sender = btnExportAllToClip then mwEdit.BlockEnd := mwEdit.BlockBegin;
  end;
end;

procedure TForm1.btnSearchClick(Sender: TObject);
begin
  FindDialog1.Execute;
  btnSearchNext.Enabled := TRUE;
  btnSearchPrev.Enabled := TRUE;
end;

procedure TForm1.btnSearchNextClick(Sender: TObject);
begin
  if (Sender = btnSearchNext) then
    FindDialog1.Options := FindDialog1.Options + [frDown]
  else if (Sender = btnSearchPrev) then
    FindDialog1.Options := FindDialog1.Options - [frDown];
  DoFindText(Sender);
  mwEdit.SetFocus;
end;

procedure TForm1.DoFindText(Sender: TObject);
var rOptions: TmwSearchOptions;
    dlg: TFindDialog;
    sSearch: string;
begin
  if Sender = ReplaceDialog1 then dlg := ReplaceDialog1
                             else dlg := FindDialog1;
  sSearch := dlg.FindText;
  if Length(sSearch) = 0 then begin
    Beep;
    lblSearchResult.Caption := 'Can''t search for empty text!';
    lblSearchResult.Visible := TRUE;
  end else begin
    rOptions := [];
    if not (frDown in dlg.Options) then
      Include(rOptions, mwsoBackwards);
    if frMatchCase in dlg.Options then
      Include(rOptions, mwsoMatchCase);
    if frWholeWord in dlg.Options then
      Include(rOptions, mwsoWholeWord);
    if mwEdit.SearchReplace(sSearch, '', rOptions) = 0 then begin
      Beep;
      lblSearchResult.Caption := 'SearchText ''' + sSearch + ''' not found!';
      lblSearchResult.Visible := TRUE;
    end else
      lblSearchResult.Visible := FALSE;
  end;
end;

procedure TForm1.btnReplaceClick(Sender: TObject);
begin
  ReplaceDialog1.Execute;
end;

procedure TForm1.DoReplaceText(Sender: TObject);
var rOptions: TmwSearchOptions;
    sSearch: string;
begin
  sSearch := ReplaceDialog1.FindText;
  if Length(sSearch) = 0 then begin
    Beep;
    lblSearchResult.Caption := 'Can''t replace an empty text!';
    lblSearchResult.Visible := TRUE;
  end else begin
    rOptions := [mwsoReplace];
    if frMatchCase in ReplaceDialog1.Options then
      Include(rOptions, mwsoMatchCase);
    if frWholeWord in ReplaceDialog1.Options then
      Include(rOptions, mwsoWholeWord);
    if frReplaceAll in ReplaceDialog1.Options then
      Include(rOptions, mwsoReplaceAll);
    if mwEdit.SearchReplace(sSearch, ReplaceDialog1.ReplaceText, rOptions) = 0
    then begin
      Beep;
      lblSearchResult.Caption := 'SearchText ''' + sSearch +
                                 ''' could not be replaced!';
      lblSearchResult.Visible := TRUE;
    end else
      lblSearchResult.Visible := FALSE;
  end;
end;

procedure TForm1.mwEditSpecialLineColors(Sender: TObject; Line: Integer;        //mh 1999-10-05
                                         var Special: Boolean; var FG, BG: TColor);
begin
  if Line = 42 then begin
    Special := TRUE;
    BG := clYellow;
    FG := clBlack;
  end;
end;

procedure TForm1.mwEditDropFiles(Sender: TObject; X, Y: Integer;                //mh 1999-11-02
            Files: TStrings);
begin
  if cbEnableEventLog.Checked and cbOther.Checked then
    lbEventLog.Items.Insert(0, TimeToStr(Now) + ' OnDropFiles');
  if Files.Count >= 1 then
    LoadFile(Files[0]);
end;

end.

⌨️ 快捷键说明

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