在DBGrid中,比如:某单元格为空时,就不能移动该存储单元格的输入焦点。我该如何
限制鼠标或键盘的移动呢,还是有别的方法。谢谢。

解决方案 »

  1.   

    请在DBGrid的OnColExit事件中加入代码:
    if (DBGrid1.SelectedField.FieldName ='Ovh_Year') and   DBGrid1.SelectedField.Text='' then
       DBgrid2.Fields[7].FocusControl;  //固定焦点不过这不能限制鼠标点击除DBGrid以外控件的操作,此问题你可以考虑一下捕捉获得焦点的ClassName 或者当DBgrid特定单无获得焦点时使其它控失效,值改变后才有效
      

  2.   

    onsettext里判断如果text这空返回原来的值。
      

  3.   

    在onkeyup加入以下事件就可以了
    给分哦,呵呵呵
     
    With TDbgrid(ActiveControl) Do
       begin
        while trim(SelectedField.AsString)='' do
           begin
            if Selectedindex<(FieldCount-1) then
             Selectedindex:=Selectedindex+1
            else
             Selectedindex:=0;
           end;
        end;
      

  4.   

    樓上的:如果對DBGrid輸入怎麼辦?而且我用鼠標移焦點怎麼辦
      

  5.   

    在onmousepress下写
    首先清空数据。呵呵~~~~~~~~~~~~~~~~~~~~~~~~  
      我们约好一起去看雪!
    ☆★○●◎◇◆□■△▲※
      

  6.   

    补充一下,我的程序,只判断键盘向右移动时的情况,如果还要更好的效果判断键盘按下的键值,执行相应的程序to:bes96261
    1、如果你要在dbgrid输入值,你就没必要跳过!如果一定要的话,每一动一格就出现一个提示框,问你是否要输入值,不要就跳过!嗬嗬嗬
    2、鼠标输入的话,就在onmousedown里加入以上代码,不就ok? 嗬嗬嗬
      

  7.   

    在onkeyup
    onmouseDOWN 都应该写那些判断的语句
      

  8.   

    allan2002(丸子)  这个方法焦点就不能移到别的控件了。
     Bes96261(秋水孤鶩)  你的方法不能实现,不好意思。500分未能给你。
    我的要求就是在dbgrid中控制焦点,但也可以移动到别的控件上。