简易文本编辑器

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    Button7: TButton;
    Panel1: TPanel;
    OpenDialog1: TOpenDialog;
    SaveDialog1: TSaveDialog;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  f: textfile;                                    //文件类型
  wfilename: string;                              //文件名存储
  flag: boolean;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);   //新建按钮
begin
  assignfile(f,'C:\newfile.txt');                 //将一个外部文件的文件名与一个File类型的变量关联,并对变量进行初始化
  form1.Caption := 'newfile.txt';                 //设置Form窗体标题
  wfilename := 'newfile.txt';                     //存储文件名
  rewrite(f);
  //对于一个已存在的文件,此操作将使文件被覆盖。
  //对于一个不存在的文件,将创建并打开文件。
  //对于一个已打开的文件,则关闭文件,并重新创建一个新的文件(覆盖原有的)。文件指针也被设置到空文件的开头处
  memo1.Enabled := true;                          //备注框可以操作
  button1.Enabled := false;                       //新建按钮不可操作
  button2.Enabled := false;                       //读文件按钮不可操作
  button3.Enabled := false;                       //写文件按钮不可操作
  button4.Enabled := true;                        //保存按钮可操作
  button5.Enabled := true;                        //另存为按钮可操作
  button6.Enabled := true;                        //关闭按钮可操作
  button7.Enabled := true;                        //退出按钮可操作
end;

procedure TForm1.Button2Click(Sender: TObject);   //读打开按钮
var
  line: string;
begin
  if opendialog1.Execute then                     //打开一个外部存在的文件
    begin
      assignfile(f,opendialog1.FileName);
      reset(f);
      //对于文本文件,Reset过程将以只读方式打开文件。
      //对于类型文件和无类型文件,Reset过程将以可读写方式打开文件。
      memo1.Enabled := false;                     //备注框不可编辑
      while not eof(f) do                         //用于判断是否到了文件的结尾
        begin
          readln(f,line);                         //用于从文件中读取一行文本
          memo1.Lines.Add(line);                  //添加到备注框
        end;
      button1.Enabled := false;
      button2.Enabled := false;
      button3.Enabled := false;
      button4.Enabled := false;
      button5.Enabled := false;
      button6.Enabled := true;
      button7.Enabled := true;
      closefile(f);
    end;                                          //用来关闭文件,同时将文件记录盘上的文件与相关文件变量断开联系。
end;

procedure TForm1.Button3Click(Sender: TObject);   //写打开按钮
var
  line: string;
begin
  if opendialog1.Execute then
    begin
      wfilename := opendialog1.FileName;          //保存文件名
      assignfile(f,wfilename);
      reset(f);
      memo1.Enabled := true;
      while not eof(f) do
        begin
          readln(f,line);                         //逐行读取
          memo1.Lines.Add(line);                  //逐行添加
        end;
      button1.Enabled := false;
      button2.Enabled := false;
      button3.Enabled := false;
      button4.Enabled := true;
      button5.Enabled := true;
      button6.Enabled := true;
      button7.Enabled := true;
      closefile(f);
    end;
end;

procedure TForm1.Button4Click(Sender: TObject);   //保存
var
  i,lastline: integer;
begin
  lastline := memo1.Lines.Add('')-1;              //获取备注框的总行数
  assignfile(f,wfilename);                        //关联文件
  rewrite(f);                                     //覆盖写入
  for i := 0 to lastline do                       //一行行保存
    begin
      writeln(f,memo1.Lines[i]);                  //将备注框的内容一行行写入文件
    end;
  closefile(f);
end;

procedure TForm1.Button5Click(Sender: TObject);   //另存为
var
  i,lastline: integer;
  writefile: textfile;
begin
  if savedialog1.Execute then                     //是否保存文件
    begin
      wfilename := savedialog1.FileName;          //另存为的名字
      assignfile(writefile,savedialog1.FileName); //关联文件
      rewrite(writefile);                         //若无此文件则创建
      form1.Caption := wfilename;                 //窗口标题设置
      lastline := memo1.Lines.Add('')-1;          //总行数
      for i := 0 to lastline do
        begin
          writeln(writefile,memo1.Lines[i]);      //写入文本
        end;
      closefile(writefile);                       //关闭文件
    end;
end;

procedure TForm1.Button6Click(Sender: TObject);   //关闭
var
  t: integer;
begin
  if not flag then
    t := messagedlg('是否保存文件',mtconfirmation,mbyesnocancel,0);
  if t <> 2 then
    begin
      if t = 6 then                               //如果保存
        button4.Click;
      memo1.Clear;
      form1.Caption := '';
      memo1.Enabled := false;
      button1.Enabled := true;
      button2.Enabled := true;
      button3.Enabled := true;
      button4.Enabled := false;
      button5.Enabled := false;
      button6.Enabled := false;
      button7.Enabled := true;
    end;
  flag := false;
end;

procedure TForm1.Button7Click(Sender: TObject);   //退出
begin
  close;
end;

end.

 

Panel     Align     Albottom   控制面板始终位于窗体下部

Memo1  Align     Alclient      备注框撑满整个窗体

posted @ 2011-12-09 14:47  endsnow  阅读(214)  评论(0)    收藏  举报