⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 editfm.pas

📁 这是一个文本编辑器源码,是用delphi7.0编写的程序,功能强大,希望大家喜欢.
💻 PAS
字号:
unit EditFM;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, StdCtrls, ComCtrls,AboutFM, ToolWin, ImgList;

type
  TEditForm = class(TForm)
    MainMenu1: TMainMenu;
    MIFile: TMenuItem;
    MIEdit: TMenuItem;
    MICharacter: TMenuItem;
    MIHelp: TMenuItem;
    MINew: TMenuItem;
    MIOpen: TMenuItem;
    MISave: TMenuItem;
    MISaveAs: TMenuItem;
    U1: TMenuItem;
    N3: TMenuItem;
    T1: TMenuItem;
    C2: TMenuItem;
    P2: TMenuItem;
    D1: TMenuItem;
    N4: TMenuItem;
    W1: TMenuItem;
    F2: TMenuItem;
    N7: TMenuItem;
    N8: TMenuItem;
    Editor: TRichEdit;
    PopupMenu1: TPopupMenu;
    U2: TMenuItem;
    R3: TMenuItem;
    N9: TMenuItem;
    T2: TMenuItem;
    C4: TMenuItem;
    P3: TMenuItem;
    D2: TMenuItem;
    A2: TMenuItem;
    N10: TMenuItem;
    F3: TMenuItem;
    L3: TMenuItem;
    DgOpen: TOpenDialog;
    DgFont: TFontDialog;
    N2: TMenuItem;
    MIExit: TMenuItem;
    DgSave: TSaveDialog;
    StatusBar: TStatusBar;
    procedure MIExitClick(Sender: TObject);
    procedure MINewClick(Sender: TObject);
    procedure MISaveAsClick(Sender: TObject);
    procedure MISaveClick(Sender: TObject);
    procedure F2Click(Sender: TObject);
    procedure MIOpenClick(Sender: TObject);
    procedure T1Click(Sender: TObject);
    procedure C2Click(Sender: TObject);
    procedure P2Click(Sender: TObject);
    procedure D1Click(Sender: TObject);
    procedure N4Click(Sender: TObject);
    procedure U1Click(Sender: TObject);
    procedure W1Click(Sender: TObject);
    procedure N8Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure EditorChange(Sender: TObject);
  private
    { Private declarations }
     PathName: string;
     HasUndo:Boolean;
  public
    { Public declarations }
    procedure CheckTextModified;
  end;

var
  EditForm: TEditForm;

const
  DefaultFileName = '无标题';

implementation

{$R *.dfm}

procedure TEditForm.CheckTextModified;
begin
    if Editor.Modified then  //修改过
    begin
        case Application.MessageBox('文件没有保存!要保存吗?',
        '提示',MB_YESNO+MB_ICONQUESTION) of
            IDYES:  //保存文件
                    MISaveClick(Self);   //保存文件
        end;
    end;
end;

procedure TEditForm.MIExitClick(Sender: TObject);
begin
    Close;
end;

procedure TEditForm.MINewClick(Sender: TObject);
begin
    CheckTextModified;  //检测是否做了修改
    Editor.Lines.Clear;  //清除所有文本
    Editor.Modified:=False;  //把Modified属性设为False
    PathName:=DefaultFileName;
    Self.Caption:=DefaultFileName;  //把窗口标题设为'无标题'
end;

procedure TEditForm.MISaveAsClick(Sender: TObject);
begin
  DgSave.FileName := DefaultFileName;
  if DgSave.Execute then
  begin
    PathName := DgSave.FileName;  //获取路径名
    if DgSave.FilterIndex=1 then  //txt文件
    begin
        Editor.PlainText:=True;
        PathName:=PathName+'.txt';
    end;
    if DgSave.FilterIndex=2 then  //rtf文件
    begin
        Editor.PlainText:=False;
        PathName:=PathName+'.rtf';
    end;
    if DgSave.FilterIndex=3 then  //所有文件
    begin
        Editor.PlainText:=False;
    end;
    Editor.Lines.SaveToFile(PathName); //保存文件
    Editor.Modified := False;  //设置Editor为未改变
    Caption := ExtractFileName(PathName);  //取出文件名,设为窗口标题
    StatusBar.Panels[1].Text:='';
  end;
end;

procedure TEditForm.MISaveClick(Sender: TObject);
begin
  if PathName = DefaultFileName then  //第一次保存
    MISaveAsClick(Sender)
  else
  begin
    Editor.Lines.SaveToFile(PathName); //已经保存过
    Editor.Modified := False;
    StatusBar.Panels[1].Text:='';
  end;
end;

procedure TEditForm.F2Click(Sender: TObject);
begin
  DgFont.Font.Assign(Editor.Font);  //DgFont的初始字体设成Editor的字体
  if DgFont.Execute then
    Editor.SelAttributes.Assign(DgFont.Font);
end;

procedure TEditForm.MIOpenClick(Sender: TObject);
begin
    DgOpen.Execute;
end;

procedure TEditForm.T1Click(Sender: TObject);
begin
  Editor.CutToClipboard;
end;

procedure TEditForm.C2Click(Sender: TObject);
begin
  Editor.CopyToClipboard;
end;

procedure TEditForm.P2Click(Sender: TObject);
begin
  Editor.PasteFromClipboard;
end;

procedure TEditForm.D1Click(Sender: TObject);
begin
  Editor.ClearSelection;
end;

procedure TEditForm.N4Click(Sender: TObject);
begin
  Editor.SelectAll;
end;

procedure TEditForm.U1Click(Sender: TObject);
begin
  if not HasUndo then
  begin
    Editor.Undo;
    HasUndo:=True;
  end;  
end;



procedure TEditForm.W1Click(Sender: TObject);
begin
  with Editor do
  begin
    WordWrap := not WordWrap; //让WordWrap取反
    if WordWrap then  //自动换行
      ScrollBars := ssVertical  //Editor只有竖直滚动条
    else
      ScrollBars := ssBoth;
    W1.Checked := WordWrap; //设置自动换行菜单项左边的对勾
  end;
end;


procedure TEditForm.N8Click(Sender: TObject);
begin
    showmessage('本文本编辑器用Delphi7.0制作,希望大家能够喜欢!有什么意见可以尽量提出!谢谢!');
end;

procedure TEditForm.FormCreate(Sender: TObject);
begin
  PathName := DefaultFileName;
  HasUndo:=False;	
end;

procedure TEditForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
    CheckTextModified;
end;

procedure TEditForm.EditorChange(Sender: TObject);
begin
    if Editor.Modified then
      StatusBar.Panels[1].Text:='已修改'
    else
      StatusBar.Panels[1].Text:='';
end;

end.

⌨️ 快捷键说明

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