1:为什么我的AdoQuery数据集不能修改
我用AdoQuery打开数据集,LockType也设置的是乐观锁定,可我修改的时候提示DataSet不能处于编辑或插入模式
2:窗体为什么没有完全销毁
我在一个窗体的Close模块中使用了free释放,窗口正常关闭,可是我从调用它的菜单再次调用打开时却提示访问地址错误,我加了一条=nil的判断发现窗体并不为nil,可是我明明已经用free释放了窗体
我的调用窗体语句是这样的:
if frmSysUser=nil then frmSysUser:=TfrmSysUser.Create(application);
  frmSysUser.Show;
想让它执行如果没有打开窗体就创建再打开,如果已打开就直接Show,结果就出现了如上情况
后来在前面加了:
  if frmSysUser=nil then
    showmessage('no create')
  else
    showmessage('create');
发现第二次执行的时候frmSysUser已经不为nil了,可我在frmSysUser的Close中已经执行了free:
procedure TfrmSysUser.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  GridUserDBTV.DataController.DataSource:=nil;
  DataSource.DataSet:=nil;
  //AdoQuery.Close;
  AdoQuery.Connection:=nil;
  AdoQuery.Free;
  free;
end;
注:我的Connection指向的是另一个窗体的一个Connection组件,此窗体的资源该释放的都释放了