主要是abort的焦点问题.
例如在窗体上有二个连接了数据库的TDBEdit,在第一个TDBEdit的对应的检核中有这个一个检核,给第二个TDBEdit写值,如:
procedure TDataModule2.ADOQuery1MF001Validate(Sender: TField);
begin
ADOQuery1MF002.AsString := '2'
end;
第二个TDBEdit对应的ADOQuery1MF002的检核是这样的:
procedure TDataModule2.ADOQuery1MF002Validate(Sender: TField);
begin
if ADOQuery1MF002.AsString = '2' then
begin
showmessage('不能为2!');
abort;
end;
end;结果:我修改第一个(ADOQuery1MF001)的值时,会触发ADOQuery1MF002的检核而报错.
但是焦点却在ADOQuery1MF001上,不在ADOQuery1MF002上,谁能解决,重分...
例如在窗体上有二个连接了数据库的TDBEdit,在第一个TDBEdit的对应的检核中有这个一个检核,给第二个TDBEdit写值,如:
procedure TDataModule2.ADOQuery1MF001Validate(Sender: TField);
begin
ADOQuery1MF002.AsString := '2'
end;
第二个TDBEdit对应的ADOQuery1MF002的检核是这样的:
procedure TDataModule2.ADOQuery1MF002Validate(Sender: TField);
begin
if ADOQuery1MF002.AsString = '2' then
begin
showmessage('不能为2!');
abort;
end;
end;结果:我修改第一个(ADOQuery1MF001)的值时,会触发ADOQuery1MF002的检核而报错.
但是焦点却在ADOQuery1MF001上,不在ADOQuery1MF002上,谁能解决,重分...
遇到错误,所以系统回到导致这个错误起始端:对第一赋值TDBEdit,焦点会一直锁定在这个TDBEdit上,直到第二个TDBEdit检测通过。但你的代码好像焦点一直会锁定在一个TDBEdit上,因为不管第一个TDBEdit怎么赋值,第二个都会赋值2
换事件是不可能的了,因为这个事件程序里用的太多了,有上千个程序呢.
to :pongjun64(迪安)
我是为了做一个测试才焦点一值都会有的.我主要是想怎么才能让焦点移动报错的那个控件上.
这个例子的ADOQuery1MF002中.我写了一个方法,类似ABORT,然后引用.但不行procedure TDataModule2.ADOQuery1MF001Validate(Sender: TField);
begin
ADOQuery1MF002.AsString := '2'
end;procedure TDataModule2.ADOQuery1MF002Validate(Sender: TField);
begin
if ADOQuery1MF002.AsString = '2' then
begin
showmessage('不能为2!');
myabort(Sender);
end;
end;procedure TDataModule2.myabort(filedname: TField);
begin
filedname.FocusControl;
try
Abort;
except
if (ExceptObject is EAbort) then
ShowMessage('Abort 异常')
else
ShowMessage('其他异常');
end;大家可以想想是不是可以重写abort,这个方法.abort是个异常,一个没有信息弹出的异常,不知道谁对这个方面比较了解.
换事件是不可能的了,因为这个事件程序里用的太多了,有上千个程序呢.
to :pongjun64(迪安)
我是为了做一个测试才焦点一值都会有的.我主要是想怎么才能让焦点移动报错的那个控件上.
这个例子的ADOQuery1MF002中.我写了一个方法,类似ABORT,然后引用.但不行procedure TDataModule2.ADOQuery1MF001Validate(Sender: TField);
begin
ADOQuery1MF002.AsString := '2'
end;procedure TDataModule2.ADOQuery1MF002Validate(Sender: TField);
begin
if ADOQuery1MF002.AsString = '2' then
begin
showmessage('不能为2!');
myabort(Sender);
end;
end;procedure TDataModule2.myabort(filedname: TField);
begin
filedname.FocusControl;
try
Abort;
except
if (ExceptObject is EAbort) then
ShowMessage('Abort 异常')
else
ShowMessage('其他异常');
end;大家可以想想是不是可以重写abort,这个方法.abort是个异常,一个没有信息弹出的异常,不知道谁对这个方面比较了解.