怎么实现点击关闭退出,若DBGrid中有数据改动才提示保存,目前问题是未修改过数据也会提示保存,代码如下,请高手指点,谢谢!
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DBGrids, StdCtrls, DB, ADODB;
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Button1: TButton;
Button2: TButton;
Button3: TButton;
DBGrid1: TDBGrid;
ADOConnection1: TADOConnection;
ADOQuery1: TADOQuery;
DataSource1: TDataSource;
ADODataSet1: TADODataSet;
Label1: TLabel;
Label2: TLabel;
procedure Button3Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
procedure Edit2KeyPress(Sender: TObject; var Key1: Char);
procedure Button2Click(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button3Click(Sender: TObject);
begin
close;
end;
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if (edit1.text<>'') and (key=#13) then edit2.SetFocus;
end;
procedure TForm1.Edit2KeyPress(Sender: TObject; var Key1: Char);
begin
if (edit2.text<>'') and (key1=#13) then button1click(sender);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ADOQuery1.close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select TD001 单别,TD002 采购单号,TD003 序号,TD027 请购单号,TD004 品号,TD008 数量,TD012 交期,TD005 品名 FROM PURTD where TD001='''+form1.edit1.Text+''' and TD002='''+form1.edit2.Text+'''');
ADOQuery1.Open;
ADOQuery1.ExecSQL;
ADOQuery1.FieldByName('单别').ReadOnly:=true;
ADOQuery1.FieldByName('采购单号').ReadOnly:=true;
ADOQuery1.FieldByName('序号').ReadOnly:=true;
ADOQuery1.FieldByName('品号').ReadOnly:=true;
ADOQuery1.FieldByName('品名').ReadOnly:=true;
ADOQuery1.FieldByName('数量').ReadOnly:=true;
ADOQuery1.FieldByName('请购单号').ReadOnly:=true;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
ADOQuery1.Refresh;
end;
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
if MessageDlg('还有未保存文件,是否关闭?',mtWarning,[mbYes,mbNo],0)=6 then
CanClose:=true
else
CanClose:=false;
end;
end.