我在DbgridEh打回车时,都是跳到下一列的。但执行以下的“刷新”代码后,打回车就不再跳到下一列了,而是下一行了。真是不明白!为什么啊?
刷新的代码:
 with MyDataSet do
  begin
    close;
    sql.Text:='select * from mytable where....';
    open;
  end;

解决方案 »

  1.   

    你刷新后用下SetFocus或是Object.OnEnter(Object ,,,)..
    OnClick(Object ,,)....OnKeyPress
    试试
      

  2.   

    lwluser(lwluser) :现在我在刷新后加了代码DbGridEh1.SetFocus;
    但是问题没有解决。请继续指教,谢谢!
      

  3.   

    我这样写,再用你的刷新方法,就没有你说的那个情况啊,你试试:
    dgeStore: TDBGridEh;
    ...
    procedure TfrmEhlib.dgeStoreKeyPress(Sender: TObject; var Key: Char);
    begin
      if Key = #13 then
        if dgeStore.SelectedIndex < dgeStore.FieldCount - 1 then
          dgeStore.SelectedIndex := dgeStore.SelectedIndex + 1
        else
        begin
          if dgeStore.Row < dgeStore.RowCount - 1 then
            dgeStore.Row := dgeStore.Row + 1;
          dgeStore.SelectedIndex := 0;
        end;
    end;
      

  4.   

    weizi2000(秋风啊):
    我的程序的情况如下:
    (1)程序中有通用的处理Enter->Tab的函数,所以没有象你那样再在此单独处理。所以,keypress没用你那样的代码。
    (2)dbgrideh的属性都采用了默认值。
    (3)dbgrid的回车跳转,在刷新前一切正常。刷新后就不正常了。现在我发现,可能是由于不断的改变DbGridEh1.ReadOnly属性有关!请老大在这方面考虑。
      

  5.   

    我找到了问题所在:原来与刷新代码无关,只因为这一句:DbGridEh1.ReadOnly=false;//true
    我发现,如果改变了DbGridEh1.ReadOnly属性,就可能造成打回车键跳到下一行的麻烦。虽然找到了问题所在,但不知道原因所在,如何解决?