如何判断被打开的文件已经被修改(100分)

  • 主题发起人 主题发起人 gratis
  • 开始时间 开始时间
G

gratis

Unregistered / Unconfirmed
GUEST, unregistred user!
  在程序中如何判断已经打开的文件被修改了,并且在退出程序的时候(如果文件被修改),给出提示是否保存文件。
 
什么文件? 各种文件处理方法也不一样.

比如,如果你要做个文本编辑器,好像Tmemo有Modified属性.

如果是其他的,你可以在修改时做一个标记(比如全局变量),退出的时候
判断一下就可以了.记住程序中,选择"保存"之后要将这个标记重置.
 
对呀你应该说明是什么文件。
如是文本文件,Delphi的几种文本编辑控件都有Modified属性,可以
判断的。

而其的文件除了cAkk说的变量之外还可用比较一下打开前的文件来判断,
这虽然是个笨方法但在有些时候却很有效。
 
呵呵,如果用构件,多数都有modified:)
 
如果是数据库的问题,则这样
在form1的Uses下加入:Db, DBTables
在form1添加table1、button1,在button1的onclick事件:
if table1.state in dsEditModes then
begin
messagedlg('是否要保存记录');
end;
你试一试修改记录一下,看会不会弹出对话框。
 
你应该说明是什么文件。
 
和别人说的一样;大多数控件有Modified属性.
为true的话,则已被修改.
 
  首先谢谢各位的帮助。
  比如说:如果是在一个TMemo控件中打开了一个文本文件,该如何判断TMemo.lines已经被修改了,并在修改的时候提示保存文件,并且保存的提示窗口该如何调用(假如提示窗口已经做好)。
 
Tmemo控件更本用不着modified属性.在Delphi4中的memo1的控件的onchange方法
中加入以下命令即可.
procedure TForm1.Memo1Change(Sender: TObject);
begin
ChangeInform.show; //changeinform为你做好的提示窗口.
end;
 
  我是说的在程序退出的时候才提示是否保存文件,用onchange时只要一修改文件,就提示了。
  我调用Modified属性,但是在退出时如果Tmemo被修改,并不打开提示窗口,而是退出程序,源代码如下:
procedure TForm1.Exit1Click(Sender: TObject);
begin
if TMemo1.Modified then
begin
Form2.Show;
end;
Close;
end;
  本人刚开始学习delphi,不知道上面的程序在什么地方有问题。
 
你有两处错误:
procedure TForm1.Exit1Click(Sender: TObject);
begin
if TMemo1.Modified then
//不应该是Tmemo1.modified,而是memo1.modified
begin
//不应该是form2.show,而是form2.showmodal
Form2.Show;
end;
Close;
end;

说明:
showmodal是模态窗口,不关闭此窗口不能聚焦其它窗口.
show 是非模态窗口,当此窗口显示时,可以聚焦其它窗口.


 
sunstone说的对,你关键是show用错了.
其实你应该在form.closequery事件里面判断,因为用户不一定非要按exit才可以
退出程序,他可以alt+f4,可以直接关闭window等等....
 
分是见着有份,望大家不要嫌少。
 
可以建立触发器
 
后退
顶部