当DBGRID处于编辑状态时,如何判断指定的CELL不为空,如果为空的话怎样让那CELL获得焦点

解决方案 »

  1.   

    procedure TForm1.DBGrid1ColExit(Sender: TObject);
    begin
     if DBGrid1.Columns.Items[DBGrid1.SelectedIndex].Field.IsNull then Abort;
    end;
      

  2.   

    TO: dragon_cbx(豫龙)
      判定了为空,然后怎样获得焦点?拜托,解决了就给分啦
      

  3.   

    好像是这样吧:
    procedure TForm1.DBGrid1ColExit(Sender: TObject);
    begin
     if DBGrid1.Columns.Items[DBGrid1.SelectedIndex].Field.IsNull then DBGrid1.SetFocus;
    end;
      

  4.   

    这样也是整个DBGRID获得焦点,并不是某个单元格获得焦点呀
      

  5.   

    三种方式1.在DBGRID所关联的数据表的OnBeforePost事件中添加代码
       if ADOQuery1.FieldByName('FIELDNAME').IsNull then
       begin
         DBGrid1.SelectedIndex:=2; //光标定位到当前记录第3个单元格
         Abort;
       end
       当然,由于DBGRID的列是可以拖动的,所以在实际应用中得循环控制判断到底是那一列是不为空的列2.通过设置数据库字段属性不为空,然后在数据表的OnPoseError时间中提示
       其实系统会提示,你只是要把提示信息改成自己的而已3.在DBGrid的OnColExit事件中添加代码
       if DBGrid1.Columns.Items[DBGrid1.SelectedIndex].Field.IsNull then Abort;
       光标默认停留在当前空列,这种方法得控制用户在当前列上下移动光标的情况,实际中很难控制推荐第一种方式,从最原始的地方进行控制