主要这个表所有列都是限制的非空字段如果在某列没输入任何值就移动到其他行的时候程序就会报错

解决方案 »

  1.   

    可以在dbgrid的关联数据集的BeforeScroll事件中写代码判断是否允许用户换行,如:
    if DataSet.FieldByName('xxx').IsNull then
      Abort;
      

  2.   

    我也遇到这样的问题。
    如果是键盘上下移动,可以在onKeyDown中处理。但是如果是鼠标点击下一行,就不知该怎样处理?
       if not (DBGridEh.DataSource.DataSet.State in [dsInsert,dsEdit]) then
       exit;
      if (key=38) or (key=40) then
        begin
         Application.MessageBox(PChar('当前是新添或修改状态,不能离开当前记录!'),PChar('错误提示警告提示'), MB_OK+MB_ICONWARNING);
          WarningDlg(','');
          key:=0;
        end;