dbgrid在处于编辑状态时,光标位于最后一条信息时,使用向下箭头或者利用tab键移动到最后一个字段列时,dbgrid会自动增加一条空纪录。
我想屏蔽掉原来的使用向下箭头或者利用tab键可以增加纪录的功能,改为利用回车键来代替,而且在最后一行的最后一列时起作用。
请问各位:如何实现这种功能呢?

解决方案 »

  1.   

    移动到最后一条记录时再按一下“下”就会追加一条记录,如果去掉这项功能 
        procedure TForm1.DataSource1Change(Sender: TObject; Field: TField);
        begin
          if TDataSource(Sender).DataSet.Eof then TDataSource(Sender).DataSet.Cancel;
        end;这个可以屏蔽 掉原来的使用向下箭头或者利用tab键可以增加纪录的功能。
    可是不能改为利用回车键来代替,而且在最后一行的最后一列时起作用。
      

  2.   

    我的做法:
    继承TCustomDBGrid,重载procedure KeyDown(var Key: Word; Shift: TShiftState); override;if(Shift=[]) and DataLink.DataSet.Active and ((DataLink.DataSet.RecNo < 0) or (DataLink.DataSet.RecNo = DataLink.DataSet.RecordCount)) then
    begin
      if Key = VK_RETURN then
        Key := VK_DOWN
      else if Key = VK_DOWN then
        Key := 0;
    end;类似这个吧,判断逻辑可以再调整
      

  3.   


    if (key=char(vk_return)) and 
     (dbgrid1.selectedindex<table1.fieldcount-1 ) then
      dbgrid1.selectedindex:=dbgrid1.selectedindex+1
    else
    if dbgrid1.selectedindex=table1.fieldcount-1 then
       begin
          table1.append;
          dbgrid1.selectedindex:=0;
      end;