editu2.pas
来自「著名的Handle」· PAS 代码 · 共 1,632 行 · 第 1/4 页
PAS
1,632 行
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} //mh 1999-12-05
procedure ValidateSpinEditValue(SE: TSpinEdit; Value: integer);
begin
if SE.Value <> Value then SE.Value := Value;
end;
begin
inpLeftMargin.MaxValue := mwEdit.Gutter.Width;
if inpLeftMargin.Value > inpLeftMargin.MaxValue then
inpLeftMargin.Value := inpLeftMargin.MaxValue;
ValidateSpinEditValue(inpGutterWidth, mwEdit.Gutter.Width);
ValidateSpinEditValue(inpDigitCount, mwEdit.Gutter.DigitCount);
ValidateSpinEditValue(inpLeftOffset, mwEdit.Gutter.LeftOffset);
ValidateSpinEditValue(inpRightOffset, mwEdit.Gutter.RightOffset);
{end} //mh 1999-12-05
end;
procedure TForm1.cbxExporterSelectChange(Sender: TObject);
begin
{begin} //mh 2000-01-20
// btnExportToClip.Enabled := cbxExporterSelect.ItemIndex > 0;
// btnExportAllToClip.Enabled := btnExportToClip.Enabled;
UpdateCanExport;
{end} //mh 2000-01-20
end;
{begin} //mh 2000-01-20
(*
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;
*)
{end} //mh 2000-01-20
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 fHighlightLineWithCaret and (fHighlightedLine = Line) then //mh 1999-12-12
begin
Special := TRUE;
BG := clBlue;
FG := clWhite;
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;
procedure TForm1.cbAutoSizeClick(Sender: TObject); //kvs 1999-11-18
begin
mwEdit.Gutter.AutoSize := cbAutoSize.Checked;
mwEdit.SetFocus;
end;
procedure TForm1.cbDragDropEditClick(Sender: TObject); //mh 1999-12-05
begin
mwEdit.SetOptionFlag(mweoDragDropEditing, cbDragDropEdit.Checked);
mwEdit.SetFocus;
end;
{begin} //mh 1999-12-12
procedure TForm1.mwEditStatusChange(Sender: TObject; Changes: TmwStatusChanges);
const
ModifiedStrs: array[boolean] of string = ('', 'Modified');
InsertModeStrs: array[boolean] of string = ('Overwrite', 'Insert');
{begin} //mh 2000-01-20
var
Token: string;
Attri: TmwHighlightAttributes;
{end} //mh 2000-01-20
begin
// mwscAll can be used to update everything, see OnCreate handler
with StatusBar do begin
// statuspanel 0: caret position
if Changes * [mwscAll, mwscCaretX, mwscCaretY] <> [] then
begin
Panels[0].Text := Format('%6d:%3d', [mwEdit.CaretY, mwEdit.CaretX]);
if fHighlightLineWithCaret then
SetHighlightedLine(mwEdit.CaretY);
end;
// statuspanel 1: Modified property
if Changes * [mwscAll, mwscModified] <> [] then
Panels[1].Text := ModifiedStrs[mwEdit.Modified];
// statuspanel 2: InsertMode property
if Changes * [mwscAll, mwscInsertMode] <> [] then
Panels[2].Text := InsertModeStrs[mwEdit.InsertMode];
end;
{begin} //mh 2000-01-20
// export selected only if there is a selection
if Changes * [mwscAll, mwscSelection] <> [] then
cbExportSelected.Enabled := mwEdit.SelAvail;
// select highlighter attribute at caret
if Assigned(mwEdit.Highlighter) and
(Changes * [mwscAll, mwscCaretX, mwscCaretY] <> [])
then begin
if not mwEdit.GetHighlighterAttriAtRowCol(mwEdit.CaretXY, Token, Attri) then
Attri := mwEdit.Highlighter.WhitespaceAttribute;
if Assigned(Attri) then begin
cbxAttrSelect.ItemIndex := cbxAttrSelect.Items.IndexOf(Attri.Name);
cbxAttrSelectChange(Self);
end;
end;
{end} //mh 2000-01-20
end;
procedure TForm1.SetHighlightedLine(Line: integer);
begin
if fHighlightedLine <> Line then
begin
mwEdit.InvalidateLine(fHighlightedLine);
fHighlightedLine := Line;
mwEdit.InvalidateLine(fHighlightedLine);
end;
end;
procedure TForm1.cbHighlightedCaretLineClick(Sender: TObject);
begin
fHighlightLineWithCaret := cbHighlightedCaretLine.Checked;
if fHighlightLineWithCaret then
fHighlightedLine := mwEdit.CaretY;
mwEdit.InvalidateLine(fHighlightedLine);
mwEdit.SetFocus;
end;
{end} //mh 1999-12-12
procedure TForm1.mwEditGutterClick(Sender: TObject; X, Y, line: Integer; //gp 2000-01-11
mark: TMark);
begin
if cbEnableEventLog.Checked and cbMouse.Checked then
lbEventLog.Items.Insert(0, TimeToStr(Now) + ' OnGutterClick');
mwEdit.CaretY := line;
if not assigned(mark) then begin // place first mark
SpeedButton1.Down := true;
SpeedButton1.Click;
end
else if (not mark.IsBookmark) and (mark.ImageIndex >= SpeedButton1.Tag) then begin
if mark.ImageIndex = SpeedButton5.Tag then begin // remove mark
SpeedButton5.Down := false;
SpeedButton5.Click;
end
else begin
mark.ImageIndex := mark.ImageIndex + 1;
end;
end;
ResetMarkButtons;
end;
{begin} //mh 2000-01-19
procedure TForm1.cbGutterVisibleClick(Sender: TObject);
begin
mwEdit.Gutter.Visible := cbGutterVisible.Checked;
mwEdit.SetFocus;
end;
procedure TForm1.cbUseFontStyleClick(Sender: TObject);
begin
mwEdit.Gutter.UseFontStyle := cbUseFontStyle.Checked;
mwEdit.SetFocus;
end;
function TForm1.GetSelectedExporter: TmwCustomExport;
var
i: integer;
begin
for i := 0 to Pred(ComponentCount) do begin
if not (Components[i] is TmwCustomExport) then continue;
Result := TmwCustomExport(Components[i]);
if Result.ExporterName = cbxExporterSelect.Text then exit;
end;
Result := nil;
end;
procedure TForm1.btnExportToFileClick(Sender: TObject);
var
Exporter: TmwCustomExport;
begin
Exporter := GetSelectedExporter;
// can't export to file in several formats at the same time...
if Assigned(Exporter) then
with SaveDialog1 do begin
Title := 'Export to';
if Execute then
mwEdit.ExportToFile(cbExportSelected.Checked, FileName, Exporter);
end;
mwEdit.SetFocus;
end;
procedure TForm1.btnExportClpClick(Sender: TObject);
begin
mwEdit.ExportToClipboard(cbExportSelected.Checked, GetSelectedExporter);
mwEdit.SetFocus;
end;
procedure TForm1.UpdateCanExport;
begin
btnExportToClipboard.Enabled := Assigned(mwEdit.Highlighter);
btnExportToFile.Enabled := Assigned(mwEdit.Highlighter) and
(cbxExporterSelect.ItemIndex > 0);
end;
{end} //mh 2000-01-19
end.
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?