我做的是超市的进销存软件,比如说是打订单吧,我想用dbgrid控件进行数据录入,商品信息已经有了,我的dbgrid有(商品编码,商品名称,规格,单位,进价,数量)等几个字段,我在商品编码处输入商品的编码然后按回家,那么商品名称,规格,单位,等息动检索出来,然后焦点自动投入到数量上,然后再按回车,跳到下一行,自动增加一条记录,这样该如何解决呢,

解决方案 »

  1.   

    首先在按回车显示的时候,你可以直接用ADOQuery结合sql语句来查询,然后显示在dbgrid中
    datasouce1.dataset := adoquery1
    dbgrid.datasource := datasource1;按回车跳下一行:你先得到当前的行号,比如说是i,然后dbgrid.rows[i].selected := true
      

  2.   

    用StringGrid或ListView吧,自已好控制点
      

  3.   

    给个思路
    不要直接读写dbgrid
    在dbgrid的onkeypress中拦截回车按键
    当前列在商品编码:则用另一个query到商品信息中查找相应编码的数据
    找到了写到当前的query中,然后指定列到数量上
    当前列在数量:检查各项数据是否合法,合法就对当前query新增一条记录
    不合法给相应提示,然后指定到相应列上指定列tdrawgrid(dbgrid1).col:=xx;
    回车的key值13
      

  4.   

    用StringGird,输入编码检索相应的记录,回车要拦截回车键消息
      

  5.   

    //获取焦点
    DBGrid1.Fields[5].FocusControl;
    //跳到下一行,并增加一行
    在DBGrid1KeyPress事件中,截取到回车信息,并增加一条记录(ADOQuerty1.Append)即可。
      

  6.   

    DBGrid实现用回车键就移到下一格,同行完结时,移到下一行
    在DBGrid的OnKeyPress的事件里写入代码:
    例子如下:
    procedure TForm.DBGridKeyPress(Sender: TObject; var Key: Char);
    var
    n:Integer;
    begin
      if Key=#13 then
      begin
        Key:=#0;
        if DBGrid1.SelectedIndex<(DBGrid1.Columns.Count-1) then
          DBGrid1.SelectedIndex:=n+1
        else
        begin
          Table1{连接到DBGrid1的数据表}.Append;
          DBGrideh1.SelectedIndex:=0;
        end;
      end;
    end;
      

  7.   

    不在dbgrid里面录入可以吗?
    我觉得用edit框也能达到同样的效果哟
    而且代码也好写的多!
      

  8.   

    不是呀,因为我觉得用dbgrid控件,在客户操作起来比较方便呀