📄 editor.~pas
字号:
unit Editor;interfaceuses SysUtils, Types, Classes, Variants, QGraphics, QControls, QForms, QDialogs, QExtCtrls, QComCtrls, QStdCtrls, QTypes, QMenus, QImgList;type TFrmEditor = class(TForm) Memo: TMemo; MainMenu: TMainMenu; MnuFile: TMenuItem; MnuEdit: TMenuItem; MnuHelp: TMenuItem; MnuItmFileNew: TMenuItem; MnuItmFileOpen: TMenuItem; N1: TMenuItem; MnuItmFileSave: TMenuItem; MnuItmFileSaveAs: TMenuItem; N2: TMenuItem; MnuItmFileExit: TMenuItem; MnuItmEditCut: TMenuItem; MnuItmEditCopy: TMenuItem; MnuItmEditPaste: TMenuItem; MnuItmEditDelete: TMenuItem; MnuItmEditSelectAll: TMenuItem; MnuItmHelpAbout: TMenuItem; MnuOptions: TMenuItem; MnuItmOptionsFont: TMenuItem; MnuSearch: TMenuItem; MnuItmSearchFind: TMenuItem; MnuItmSearchReplace: TMenuItem; FindDialog: TFindDialog; ReplaceDialog: TReplaceDialog; FontDialog: TFontDialog; SaveDialog: TSaveDialog; OpenDialog: TOpenDialog; StatusBar: TStatusBar; ImageList: TImageList; ToolBar: TToolBar; TolBtnNew: TToolButton; TolBtnOpen: TToolButton; TolBtnSave: TToolButton; TolBtnExit: TToolButton; ToolButton5: TToolButton; TolBtnCut: TToolButton; TolBtnCopy: TToolButton; TolBtnPaste: TToolButton; ToolButton9: TToolButton; TolBtnFind: TToolButton; TolBtnReplace: TToolButton; ToolButton12: TToolButton; TolBtnFont: TToolButton; procedure MnuItmFileExitClick(Sender: TObject); procedure MnuItmEditCopyClick(Sender: TObject); procedure MnuItmEditCutClick(Sender: TObject); procedure MnuItmEditPasteClick(Sender: TObject); procedure MnuItmEditDeleteClick(Sender: TObject); procedure MnuItmEditSelectAllClick(Sender: TObject); procedure MnuItmOptionsFontClick(Sender: TObject); procedure MnuItmSearchFindClick(Sender: TObject); procedure MnuItmSearchReplaceClick(Sender: TObject); procedure MnuItmFileNewClick(Sender: TObject); procedure MnuItmFileOpenClick(Sender: TObject); procedure MnuItmFileSaveClick(Sender: TObject); procedure MnuItmFileSaveAsClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); procedure FindDialogFind(Sender: TObject); procedure ReplaceDialogFind(Sender: TObject); procedure ReplaceDialogReplace(Sender: TObject); procedure MnuItmHelpAboutClick(Sender: TObject); private { Private declarations } FFileName: string; FCaptionDef: string; public { Public declarations } function GetFileName(): string; end;var FrmEditor: TFrmEditor;implementationuses About, Splash;{$R *.xfm}procedure TFrmEditor.MnuItmFileExitClick(Sender: TObject);begin Close();end;procedure TFrmEditor.MnuItmEditCopyClick(Sender: TObject);begin Memo.CopyToClipboard();end;procedure TFrmEditor.MnuItmEditCutClick(Sender: TObject);begin Memo.CutToClipboard();end;procedure TFrmEditor.MnuItmEditPasteClick(Sender: TObject);begin Memo.PasteFromClipboard();end;procedure TFrmEditor.MnuItmEditDeleteClick(Sender: TObject);begin Memo.ClearSelection();end;procedure TFrmEditor.MnuItmEditSelectAllClick(Sender: TObject);begin Memo.SelectAll();end;procedure TFrmEditor.MnuItmOptionsFontClick(Sender: TObject);begin FontDialog.Font.Assign( Memo.Font ); if FontDialog.Execute() then Memo.Font.Assign( FontDialog.Font );end;procedure TFrmEditor.MnuItmSearchFindClick(Sender: TObject);begin FindDialog.Execute();end;procedure TFrmEditor.MnuItmSearchReplaceClick(Sender: TObject);begin ReplaceDialog.Execute();end;procedure TFrmEditor.MnuItmFileNewClick(Sender: TObject);begin FFileName := 'Untitle.txt'; Caption := FCaptionDef + ': ' + FFileName; Memo.Clear();end;function TFrmEditor.GetFileName: string;begin Result := FFileName;end;procedure TFrmEditor.MnuItmFileOpenClick(Sender: TObject);begin if OpenDialog.Execute() then begin FFileName := OpenDialog.FileName; Caption := FCaptionDef + ': ' + FFileName; Memo.Clear(); Memo.Lines.LoadFromFile( FFileName ); Memo.SetFocus(); Memo.Modified := false; Memo.ReadOnly := false; end;end;procedure TFrmEditor.MnuItmFileSaveClick(Sender: TObject);begin if Pos( 'Untitle', FFileName ) <> 0 then MnuItmFileSaveAsClick( Sender ) else begin Memo.Lines.SaveToFile( FFileName ); Memo.Modified := false; end;end;procedure TFrmEditor.MnuItmFileSaveAsClick(Sender: TObject);begin SaveDialog.Title := 'Save As...'; if SaveDialog.Execute() then begin Memo.Lines.SaveToFile( FFileName ); FFileName := SaveDialog.FileName; Caption := FCaptionDef + ': ' + FFileName; Memo.Modified := false; end;end;procedure TFrmEditor.FormCreate(Sender: TObject);{var i: Integer; FrmSplash: TFrmSplash;}begin FCaptionDef := 'Text Editor'; FFileName := 'Untitle.txt'; Caption := FCaptionDef + ': ' + FFileName;{ FrmSplash := TFrmSplash.Create( Application );// FrmSplash.FormStyle := fsStayOnTop; FrmSplash.Show(); FrmSplash.Update(); FrmSplash.TimerDelay.Enabled := true;}end;procedure TFrmEditor.FormCloseQuery(Sender: TObject; var CanClose: Boolean);var ReturnBtn: TMessageButton;begin if Memo.Modified then begin ReturnBtn := Application.MessageBox( 'File has been modified. Save it?', 'Warning', [ smbYes, smbNo, smbCancel ], smsWarning, smbYes, smbCancel ); if ReturnBtn = smbYes then begin MnuItmFileSaveClick( Sender ); exit; end; if ReturnBtn = smbNo then begin exit; end; if ReturnBtn = smbCancel then begin CanClose := false; end; end;end;procedure TFrmEditor.FindDialogFind(Sender: TObject);var i, j: Integer; PosReturn, SkipChars: Integer;begin for i := 0 to Memo.Lines.Count do begin PosReturn := Pos( FindDialog.FindText, Memo.Lines[ i ] ); if PosReturn <> 0 then begin SkipChars := 0; for j := 0 to i - 1 do begin SkipChars := SkipChars + Length( Memo.Lines[ i ] ); end; SkipChars := SkipChars + ( i * 2 ); SkipChars := SkipChars + PosReturn - 1; Memo.SetFocus(); Memo.SelStart := SkipChars; Memo.SelLength := Length( FindDialog.FindText ); break; end; end;end;procedure TFrmEditor.ReplaceDialogFind(Sender: TObject);var i, j: Integer; PosReturn, SkipChars: Integer;begin for i := 0 to Memo.Lines.Count do begin PosReturn := Pos( ReplaceDialog.FindText, Memo.Lines[ i ] ); if PosReturn <> 0 then begin SkipChars := 0; for j := 0 to i - 1 do begin SkipChars := SkipChars + Length( Memo.Lines[ i ] ); end; SkipChars := SkipChars + ( i * 2 ); SkipChars := SkipChars + PosReturn - 1; Memo.SetFocus(); Memo.SelStart := SkipChars; Memo.SelLength := Length( ReplaceDialog.FindText ); break; end; end;end;procedure TFrmEditor.ReplaceDialogReplace(Sender: TObject);begin Memo.SelText := ReplaceDialog.ReplaceText;end;procedure TFrmEditor.MnuItmHelpAboutClick(Sender: TObject);var AboutBox: TAboutBox;begin AboutBox := TAboutBox.Create( Application ); try ABoutBox.ShowModal(); finally AboutBox.Free(); AboutBox := nil; end;end;end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -