如题,当我在某个格子(cell)里填数后,我在onSetText事件中判断,控制他的输入,当不满足条件时弹出对话框,确认以后会自动跳转到下一个格子(cell),我怎么控制他,当不满足条件时,不往下一格跳,焦点仍然在当前输入格

解决方案 »

  1.   

    可以DBGridEh的DataSource.DataSet中的BeforePost控制,你在这里校验,如果不满足条件,就直接DataSource.DataSet.Next,这样焦点也不会变化。
      

  2.   

    可以DBGridEh的DataSource.DataSet中的BeforePost控制,你在这里校验,如果不满足条件,就直接DataSource.DataSet.Next,这样焦点也不会变化。
    完全可以实现的。
      

  3.   

    在onSetText事件中判断,完了后终止数据集的前行就可以了
    只要加上: Abort;就行了ONSetText(Sender: TField;
      const Text: String);
      var
        s:string;
        i,len:Integer;
      F:Real;
      begin
      s:=Text ;
      i:=-1;
      i:= pos('.',s);
      if i=0 then
         begin
           s :='0'+s ;
         end;
       i:= pos('.',s);
      len:=Length( s);
      if i<len then
          begin
            if PosEx('.',s,i+1)>0 then
               begin
                 Application.MessageBox('你录入的数据不符要求,' + #13#10 +
                   '请按ESC后重新输入!', '信息', MB_OK + MB_ICONWARNING);
                    Abort;
               end;
          end;