editu2.pas
来自「本人买的<<VC++项目开发实例>>源代码配套光盘.」· PAS 代码 · 共 1,411 行 · 第 1/4 页
PAS
1,411 行
if idx >= 0 then cbxHighlighterSelect.ItemIndex := idx;
// cbxHighlighterSelectChange(Sender);
cbxHighlighterSelectChange(Self);
Result := true;
end;
end; //while
end
end; { MatchesExtension }
var
i : integer;
ext: string;
bWasText: boolean; //mh 1999-10-04
backCursor: TCursor;
begin
backCursor := Cursor;
try
Cursor := crHourGlass;
Windows.SetCursor(Screen.Cursors[crHourGlass]);
// if OpenDialog1.Execute then
// begin
// fName := OpenDialog1.FileName;
fName := FileName;
outFilename.Caption := fName;
outFilename.Visible := true;
ext := UpperCase(ExtractFileExt(fName));
for i := 0 to ComponentCount-1 do
if Components[i] is TmwCustomHighLighter then begin
if MatchesExtension(ext,Components[i] as TmwCustomHighlighter) then break;
end;
btnPrint.Enabled := true;
if mwEdit.HighLighter = dmDfmSyn1 then
LoadDFMFile2Strings(fName, mwEdit.Lines, bWasText) //mh 1999-10-04
else
mwEdit.Lines.LoadFromFile(fName);
mwEdit.Modified := false;
mwEdit.ClearUndo;
inpLineText.Text := mwEdit.LineText;
mwEdit.SetFocus;
finally
Cursor := backCursor;
end;
end;
procedure TForm1.btnLoadClick(Sender: TObject);
begin
if OpenDialog1.Execute then
LoadFile(OpenDialog1.FileName);
end;
{end} //mh 1999-11-02
procedure TForm1.EnumerateHighlighters;
var
i: integer;
begin
cbxHighlighterSelect.Items.Add('(none)');
OpenDialog1.Filter := '';
for i := 0 to ComponentCount-1 do
if Components[i] is TmwCustomHighLighter then begin
cbxHighlighterSelect.Items.Add((Components[i] as TmwCustomHighLighter).LanguageName);
if (Components[i] as TmwCustomHighLighter).DefaultFilter <> '' then begin
if OpenDialog1.Filter <> '' then OpenDialog1.Filter := OpenDialog1.Filter + '|';
OpenDialog1.Filter := OpenDialog1.Filter + (Components[i] as TmwCustomHighLighter).DefaultFilter;
end;
end;
if OpenDialog1.Filter <> '' then OpenDialog1.Filter := OpenDialog1.Filter + '|';
OpenDialog1.Filter := OpenDialog1.Filter + 'All files (*.*)|*.*';
end;
procedure TForm1.EnumerateExporters;
var
i: integer;
begin
cbxExporterSelect.Items.Add('(none)');
for i := 0 to ComponentCount-1 do
if Components[i] is TmwCustomExport then
cbxExporterSelect.Items.Add((Components[i] as TmwCustomExport).ExporterName);
cbxExporterSelect.ItemIndex := 0;
cbxExporterSelectChange(self);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
markButtons[0] := SpeedButton1;
markButtons[1] := SpeedButton2;
markButtons[2] := SpeedButton3;
markButtons[3] := SpeedButton4;
markButtons[4] := SpeedButton5;
PageControl1.ActivePage := tabFile;
EnumerateHighlighters;
EnumerateExporters;
UpdateKeystrokesList;
FontDialog1.Font.Assign(mwEdit.Font); //mh 1999-09-12
mwCompletionProposal1.Editor := mwEdit; //gp 1999-11-30
mwAutoComplete1.Editor := mwEdit; //gp 1999-11-30
end;
procedure TForm1.cbxSettingsSelectChange(Sender: TObject);
var
ok: boolean;
begin
with cbxSettingsSelect do begin
ok := mwEdit.Highlighter.UseUserSettings(ItemIndex);
if ok
then StatusBar.SimpleText := 'Success'
else StatusBar.SimpleText := 'Failure';
ReloadAttributes;
if fName <> '' then begin
mwEdit.Invalidate;
mwEdit.SetFocus;
end;
end;
end;
procedure TForm1.btnUndoClick(Sender: TObject);
begin
mwEdit.Undo;
mwEdit.SetFocus;
end;
procedure TForm1.mwEditEnter(Sender: TObject);
begin
if cbEnableEventLog.Checked and cbOther.Checked then
lbEventLog.Items.Insert(0, TimeToStr(Now) + ' OnEnter');
btnUndo.Enabled := mwEdit.CanUndo;
btnRedo.Enabled := mwEdit.CanRedo;
end;
procedure TForm1.mwEditKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if cbEnableEventLog.Checked and cbKeyboard.Checked then
lbEventLog.Items.Insert(0, TimeToStr(Now) + ' OnKeyUp');
btnUndo.Enabled := mwEdit.CanUndo;
btnRedo.Enabled := mwEdit.CanRedo;
cbInsertMode.Checked := mwEdit.InsertMode;
LoadInfo;
end;
procedure TForm1.mwEditChange(Sender: TObject);
begin
if cbEnableEventLog.Checked and cbOther.Checked then
lbEventLog.Items.Insert(0, TimeToStr(Now) + ' OnChange');
btnUndo.Enabled := mwEdit.CanUndo;
btnRedo.Enabled := mwEdit.CanRedo;
if mwEdit.Modified then begin
with outFilename do
if Caption[Length(Caption)] <> ')' then
Caption := fname + ' (modified)'
end
else begin
with outFilename do
if Caption[Length(Caption)] = ')' then
Caption := fname;
end;
LoadInfo;
end;
procedure TForm1.ReloadAttributes;
var
i: integer;
begin
if cbxHighlighterSelect.ItemIndex > 0 then begin
cbxAttrSelect.Items.Clear;
for i := 0 to mwEdit.HighLighter.AttrCount - 1 do
cbxAttrSelect.Items.Add(mwEdit.HighLighter.Attribute[i].Name);
cbxAttrSelect.ItemIndex := 0;
end;
cbxAttrSelectChange(Self);
end;
procedure TForm1.cbxHighlighterSelectChange(Sender: TObject);
var
i: integer; //Carlos 1998-27-12
begin
mwEdit.Highlighter := nil;
for i := 0 to ComponentCount-1 do
if (Components[i] is TmwCustomHighLighter) and
((Components[i] as TmwCustomHighLighter).LanguageName = cbxHighlighterSelect.Text) then begin
mwEdit.Highlighter := (Components[i] as TmwCustomHighLighter);
break;
end;
cbxExporterSelect.Enabled := assigned(mwEdit.Highlighter) and (hcExportable in mwEdit.Highlighter.Capability);
btnExportToClip.Enabled := cbxExporterSelect.Enabled and (cbxExporterSelect.ItemIndex > 0);
btnExportAllToClip.Enabled := btnExportToClip.Enabled;
StatusBar.SimpleText := '';
mwEdit.Invalidate;
cbxSettingsSelect.Items.Clear;
if assigned(mwEdit.Highlighter) and (hcUserSettings in mwEdit.Highlighter.Capability) then begin
mwEdit.HighLighter.EnumUserSettings(cbxSettingsSelect.Items);
end;
cbxSettingsSelect.Enabled := (cbxSettingsSelect.Items.Count > 0);
btnSaveToReg.Enabled := assigned(mwEdit.Highlighter) and (hcRegistry in mwEdit.Highlighter.Capability);
btnLoadFromReg.Enabled := btnSaveToReg.Enabled;
{begin} //Carlos 1998-27-12
cbxAttrSelect.Enabled := (cbxHighlighterSelect.ItemIndex > 0);
cbxAttrForeground.Enabled := (cbxHighlighterSelect.ItemIndex > 0);
cbxAttrBackground.Enabled := (cbxHighlighterSelect.ItemIndex > 0);
grbAttrStyle.Enabled := (cbxHighlighterSelect.ItemIndex > 0);
grbAttrComments.Enabled := mwEdit.Highlighter is TmwGeneralSyn;
btnKeywords.Enabled := grbAttrComments.Enabled;
if grbAttrComments.Enabled then begin
cbCommentsAnsi.Checked := (csAnsiStyle in (mwEdit.HighLighter as TmwGeneralSyn).Comments);
cbCommentsPas.Checked := (csPasStyle in (mwEdit.HighLighter as TmwGeneralSyn).Comments);
cbCommentsC.Checked := (csCStyle in (mwEdit.HighLighter as TmwGeneralSyn).Comments);
cbCommentsAsm.Checked := (csAsmStyle in (mwEdit.HighLighter as TmwGeneralSyn).Comments);
cbCommentsBas.Checked := (csBasStyle in (mwEdit.HighLighter as TmwGeneralSyn).Comments);
end;
ReloadAttributes;
{end} //Carlos 1998-27-12
if cbxHighlighterSelect.Text = odPySyn1.LanguageName
then odPythonBehaviour1.Editor := mwEdit
else odPythonBehaviour1.Editor := nil;
mwEdit.SetFocus;
end;
procedure TForm1.cbReadonlyClick(Sender: TObject);
begin
mwEdit.Readonly := cbReadonly.Checked;
mwEdit.SetFocus;
end;
const
Colors: array[1..42 {sic!}] of TColor = (clBlack, clMaroon, clGreen, clOlive,
clNavy, clPurple, clTeal, clDkGray, clLtGray, clRed, clLime,
clYellow, clBlue, clFuchsia, clAqua, clWhite, clScrollBar,
clBackground, clActiveCaption, clInactiveCaption, clMenu, clWindow,
clWindowFrame, clMenuText, clWindowText, clCaptionText,
clActiveBorder, clInactiveBorder, clAppWorkSpace, clHighlight,
clHighlightText, clBtnFace, clBtnShadow, clGrayText, clBtnText,
clInactiveCaptionText, clBtnHighlight, cl3DDkShadow, cl3DLight,
clInfoText, clInfoBk, clNone);
function TForm1.ColorToIndex(col: TColor): integer;
var
i: integer;
begin
Result := 0;
for i := 1 to 42 do
if Colors[i] = col then begin
Result := i - 1;
Exit;
end;
end;
function TForm1.IndexToColor(index: integer): TColor;
begin
Result := Colors[index + 1];
end;
procedure TForm1.LoadSettings;
begin
cbReadonly.Checked := mwEdit.Readonly;
cbHideSelection.Checked := mwEdit.HideSelection;
{begin} //mh 1999-10-04
cbAutoIndent.Checked := mweoAutoIndent in mwEdit.Options; //mwEdit.Autoindent;
cbWantTabs.Checked := mwEdit.WantTabs;
inpTabWidth.Value := mwEdit.TabWidth; //inpTabIndent.Value := mwEdit.TabIndent;
cbScrollPastEOL.Checked := mweoScrollPastEol in mwEdit.Options; //mwEdit.ScrollPastEOL;
cbHalfpageScroll.Checked := mweoHalfPageScroll in mwEdit.Options; //mwEdit.HalfpageScroll;
{end} //mh 1999-10-04
btnFont.Caption := mwEdit.Font.Name + ' ' + IntToStr(mwEdit.Font.Size);
inpRightEdge.Value := mwEdit.RightEdge;
inpExtraLineSpacing.Value := mwEdit.ExtraLineSpacing;
cbxScrollBars.ItemIndex := Ord(mwEdit.Scrollbars);
cbxColor.ItemIndex := ColorToIndex(mwEdit.Color);
cbxREColor.ItemIndex := ColorToIndex(mwEdit.RightEdgeColor);
cbxForeground.ItemIndex := ColorToIndex(mwEdit.SelectedColor.Foreground);
cbxBackground.ItemIndex := ColorToIndex(mwEdit.SelectedColor.Background);
cbxInsertCaret.ItemIndex := Ord(mwEdit.InsertCaret);
cbxOverwriteCaret.ItemIndex := Ord(mwEdit.OverwriteCaret);
cbInsertMode.Checked := mwEdit.InsertMode;
inpGutterWidth.Value := mwEdit.Gutter.Width; //gp 1999-06-10
inpDigitCount.Value := mwEdit.Gutter.DigitCount; //gp 1999-06-10
inpLeftOffset.Value := mwEdit.Gutter.LeftOffset; //gp 1999-06-10
inpRightOffset.Value := mwEdit.Gutter.RightOffset; //gp 1999-06-10
cbLineNumbers.Checked := mwEdit.Gutter.ShowLineNumbers; //gp 1999-06-10
cbLeadingZeros.Checked := mwEdit.Gutter.LeadingZeros; //gp 1999-06-10
cbZeroStart.Checked := mwEdit.Gutter.ZeroStart; //gp 1999-06-10
cbxGutterColor.ItemIndex := ColorToIndex(mwEdit.Gutter.Color); //gp 1999-06-10
cbGlyphsVisible.Checked := mwEdit.BookMarkOptions.GlyphsVisible;
cbEnableKeys.Checked := mwEdit.BookMarkOptions.EnableKeys;
inpLeftMargin.Value := mwEdit.BookMarkOptions.LeftMargin;
inpXOffset.Value := mwEdit.BookmarkOptions.XOffset;
inpMaxUndo.Value := mwEdit.MaxUndo;
{begin} //Carlos 1998-27-12
cbxAttrForeground.Items.Assign(cbxColor.Items);
cbxAttrBackground.Items.Assign(cbxColor.Items);
cbxAttrSelect.ItemIndex := 0;
cbxAttrSelectChange(Self);
{end} //Carlos 1998-27-12
end;
procedure TForm1.cbHideSelectionClick(Sender: TObject);
begin
mwEdit.HideSelection := cbHideSelection.Checked;
mwEdit.SetFocus;
end;
procedure TForm1.cbScrollPastEOLClick(Sender: TObject);
begin
mwEdit.SetOptionFlag(mweoScrollPastEOL, cbScrollPastEOL.Checked);
mwEdit.SetFocus;
end;
procedure TForm1.inpRightEdgeChange(Sender: TObject);
begin
try mwEdit.RightEdge := inpRightEdge.Value;
except
end;
mwEdit.SetFocus;
end;
procedure TForm1.cbxScrollBarsChange(Sender: TObject);
begin
mwEdit.Scrollbars := TScrollStyle(cbxScrollBars.ItemIndex);
mwEdit.SetFocus;
end;
procedure TForm1.cbxColorChange(Sender: TObject);
begin
mwEdit.Color := IndexToColor(cbxColor.ItemIndex);
mwEdit.SetFocus;
end;
procedure TForm1.cbxForegroundChange(Sender: TObject);
begin
mwEdit.SelectedColor.Foreground := IndexToColor(cbxForeground.ItemIndex);
mwEdit.SetFocus;
end;
procedure TForm1.cbxBackgroundChange(Sender: TObject);
begin
mwEdit.SelectedColor.Background := IndexToColor(cbxBackground.ItemIndex);
mwEdit.SetFocus;
end;
procedure TForm1.btnFontClick(Sender: TObject);
begin
if FontDialog1.Execute then begin
mwEdit.Font.Assign(FontDialog1.Font);
LoadSettings;
mwEdit.SetFocus;
end;
end;
procedure TForm1.cbxInsertCaretChange(Sender: TObject);
begin
mwEdit.InsertCaret := TCaretType(cbxInsertCaret.ItemIndex);
mwEdit.SetFocus;
end;
procedure TForm1.cbxOverwriteCaretChange(Sender: TObject);
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?