在dbgrid中按向下方向键,会增加一个记录
怎么样才能屏蔽向下的方向键而且还不影响我用其它事件插入记录

解决方案 »

  1.   

    在onkeydown事件中写:  if (key=VK_DOWN)and(MT1.RecNo>=MT1.RecordCount) then  //判断最后一条
      begin
        With TDBGridEh(Sender) Do
        begin
          if (Selectedindex>=(FieldCount-1))and(BtnSave.CanFocus) then
            BtnSave.SetFocus;
        end;
        abort;
      end;  if (key=VK_TAB)and(MT1.RecNo>=MT1.RecordCount) then
      begin
        With TDBGridEh(Sender) Do
        begin
          if (Selectedindex>=(FieldCount-1))and(BtnSave.CanFocus) then
          begin
            BtnSave.SetFocus;
            abort;
          end;
        end;
      end;我用的TDBGridEh,换成TDBGrid即可,不仅屏蔽了vk_down,而且屏蔽了vk_tab
      

  2.   

    BtnSave.CanFocus是什么、作用?
    是否能得到焦点
      

  3.   

    不是BtnSave.CanFocus
    是BtnSave.SetFocus,让btnSave获得焦点
      

  4.   

    Selectedindex>=(FieldCount-1))有什么用啊
      

  5.   

    这是我从我的程序中复制过来的,没有经过修改,你可以领会其中的含义:1、如果焦点行在最后一条记录,并且焦点列在最后一个字段上,此时按vk_down或vk_tab,焦点   将转向按钮btnsave2、如果焦点行不在最后一条记录,则按正常的焦点进行转移。这段代码比较通用,适合你这样的情况,并且我一直使用这段代码MT:是数据集的名字,Selectedindex当前焦点列,MT1.RecNo当前焦点行,FieldCount 字段数量(列总数)
      

  6.   

    BtnSave.CanFocus是我做的一步判断,避免了SetFocus可能产生的错误,意义:BtnSave是否可以获得焦点。