关于DELPHI网格添加数据

来源:百度知道 编辑:UC知道 时间:2024/06/02 07:39:28
procedure TFormMain.N1Click(Sender: TObject);
//主窗体事件
//增加
var
AControl: TWinControl;
begin
try
AControl := Screen.ActiveControl;
if(DBGrid2.ContainsControl(AControl))then
begin
DBGrid2.SetFocus;
FCustomer.Detail.Insert;
ShowMessage('顾客明细数据已经增加!');
end
else
begin
Name.SetFocus;
FCustomer.Insert;
FCustomer.Detail.Insert;
ShowMessage('顾客数据已经增加!');
end;
except
on e: Exception do
begin
FCustomer.DataSet.CancelBatch;
ShowMessage('顾客数据增加失败!');
end;
end;
end;

这是我的程序,为什么我按添加会先弹出提示对话框,然后再出现焦点变化,接着可以添加?

是因为你先判断if(DBGrid2.ContainsControl(AControl))then 为false阿才可以执行下面的语句,而当你运行你的程序时它进去判断当前你的DBGrid2的哪个处在活动状态,没有就执行了下面的阿,你可以用断点执行看下你的运行顺序就明白了。我想应该是if not(DBGrid2.ContainsControl(AControl))then 这样会好点吧你试下我也不是很确定