用 try .....except来解决可去掉错误信息,不过有一点你要注意因为你设的字段不能为空必须在DBgrid中的onexit事件判断是否DBGRID中对应于不能为空的字段为空,还有一点如果你在DBGRID中已经删除了对应于不能为空的那个字段的数据,在移动"↑"或"↓"键时它会自动进行SAVE那又会出现错误的信息。
解决方案 »
- InterBase 存储过程
- MDI窗体的问题
- 200分求一算法和代码:如何在dbgrid中使用拖动排列记录顺序?
- 请问《delphi 6 开发人员指南》和《delphi 5 开发人员指南》的区别
- 怎么会出现两条记录 ?
- delphi下如何取得鼠标单击事件时,鼠标的x,y坐标值?
- 请大家帮忙看看:我这样的情况可以用midas开发吗?(上次没有问明白,不要见笑)
- 不解? 如何将dbgrid选定的 纪录 取出 来 放到另外一个 listview 里???
- 最近,老大布置了个任务。。给卡住了!
- 如何删除delphi6中生成并在注册表中注册的应用程序?
- 老问题:两台装有MODERM的机器为何不能通信(是指目录文件共享),我的步骤是...,请指导??
- 有办法打印dbgrid中的记录数据吗?
if Dateset.FieldByName('XX').IsNull then
begin
Application.MessageBox('XX的值不能为空!','警告',MB_Ok+MB_IconWarning) ;
Abort ;
end;
没有代码无法用try...except!
procedure HandleException(Sender: TObject; E: Exception);
end;TMyExeception.HandleException(Sender: TObject; E: Exception);
begin
//your code
.
.
end;TForm1.FormaCreate(Sender: TObject)
begin
Application.Onexception=MyException.HandleException;
.
.
end;
现在给一个完整点的例子
program Project1;uses
SysUtils,//其中包含Exception 类的声明
Forms,
Unit1 in 'Unit1.pas' {Form1};type
THG=class//声明类
public
procedure HP(Sender:TObject;Einstance:Exception);//声明方法
end; procedure THG.HP(Sender:TObject;Einstance:Exception);
begin
//加入自己的异常处理方案
end;var
HG:THG; //声明全局变量
{$R *.RES}begin
HG:=THG.Create;
Application.OnException:=HG.HP;
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.注:1、这里是全局异常处理。
2、在缺省异常中如OnException中无代码,就调用ShowException,其提供缺省异常处理。
3、你的例子运行 Post Database 时弹出的对话框就是ShowException的杰作。
4、详细运用可参考 Delphi Help 的 Exception 说明。