var
Form3: TForm3;
FileName:string;
TxtFileName:string;
NewFile:Boolean;
MemDescDif:Boolean;
NullOperateAll:Boolean;
StrType:string;
type
OperateCheck=(OpNull,OpCreat,OpOpen,OpSave,OpSaveAs);
var
MyOperate:OperateCheck;
implementation
{$R *.dfm}
procedure TForm3.OutSave;
begin
if MemDescDif then
begin
StrType:='文件 '+Form3.Caption+' 的文字以改变,是否保存?';
case MyOperate of
OpCreat:
begin
ShowMessage(StrType);
SaveDialogDesc.FileName:=Form3.Caption;
if SaveDialogDesc.Execute then
begin
FileName:=SaveDialogDesc.FileName;
memDesc.Lines.SaveToFile(FileName);
MemDescDif:=False;
end;
end;
OpNull:
begin
if NullOperateAll then
begin
ShowMessage(StrType);
SaveDialogDesc.FileName:=Form3.Caption;
if SaveDialogDesc.Execute then
begin
FileName:=SaveDialogDesc.FileName;
memDesc.Lines.SaveToFile(FileName);
MemDescDif:=False;
end;
end;
end;
OpOpen:
begin
ShowMessage(StrType);
SaveDialogDesc.FileName:=Form3.Caption;
FileName:=SaveDialogDesc.FileName;
memDesc.Lines.SaveToFile(FileName);
MemDescDif:=False;
end;
end;
end
end;
procedure TForm3.FormCreate(Sender: TObject);
//创建窗体过程
begin
Form3.Caption:='无标题.txt';
memDesc.Text:='';
MemDescDif:=False;
NullOperateAll:=False;
end;
procedure TForm3.FrmClose(Sender: TObject; var Action: TCloseAction);
begin
OutSave();
Form3.Free;
end;
procedure TForm3.MemDescChange(Sender: TObject);
//memdesc内容变化
begin
MemDescDif:=True;
NullOperateAll:=True;
end;
procedure TForm3.N3Click(Sender: TObject);
//打开
begin
OutSave();
if OpenDialogChoice.Execute then
begin
MyOperate:=OpOpen;
NewFile:=False;
FileName:=OpenDialogChoice.FileName;
memDesc.Lines.LoadFromFile(FileName);
Form3.Caption:=ExtractFileName(FileName);
Application.Title:=ExtractFileName(FileName);
MemDescDif:=False;
end;
end;
procedure TForm3.N4Click(Sender: TObject);
//保存
begin
if MyOperate=OpCreat then
begin
SaveDialogDesc.FileName:=Form3.Caption;
if SaveDialogDesc.Execute then
begin
MyOperate:=OpSave;
FileName:=SaveDialogDesc.FileName;
memDesc.Lines.SaveToFile(FileName);
MemDescDif:=False;
end;
end
else begin
if MyOperate=OpNull then
begin
SaveDialogDesc.FileName:=Form3.Caption;
if SaveDialogDesc.Execute then
begin
MyOperate:=OpSave;
FileName:=SaveDialogDesc.FileName;
memDesc.Lines.SaveToFile(FileName);
MemDescDif:=False;
end;
end
else begin
MyOperate:=OpSave;
memDesc.Lines.SaveToFile(FileName);
MemDescDif:=False;
end;
end;
end;
procedure TForm3.N5Click(Sender: TObject);
//另存为
begin
MyOperate:=OpSaveAs;
SaveDialogDesc.FileName:=Form3.Caption;
if SaveDialogDesc.Execute then
begin
FileName:=SaveDialogDesc.FileName;
memDesc.Lines.SaveToFile(FileName);
MemDescDif:=False;
end;
end;
Windows 自带的新建只是将Memo清空罢了 eg: Memo1.lines.clear;//在当前没有打开文件的时候
保存便是调用SaveDialog 将Memo已有的内容写到磁盘
eg: if SaveDialog1.Excute then Memo1.lines.SaveToFile(SaveDialog1.FileName);
大概就这样 应该不会打错