现在我只能按TAB挑到下一个字段,按回车不行,我加了以下CODE也不行procedure TfrmA1.FormKeyPress(Sender: TObject; var Key: Char);
begin
   if Key=#13 then
  { 判断是按执行键}
  if not (ActiveControl is TDBGridEh) then
  Begin { 不是在TDbgrid控件内}
    key:=#0;
    perform(WM_NEXTDLGCTL,0,0); {移动到下一个控件}
  end else
  if (ActiveControl is TDBGridEh) then  {是在 TDbgrid 控件内}
  begin
     with TDbgridEh(ActiveControl) do
     if Selectedindex<(FieldCount-1) then
     Selectedindex:=Selectedindex+1   //移动到下一字段
     else
     begin
        sendmessage(dbgrideh1.Handle,wm_keydown,vk_tab,0);
      dbgrideh1.Col:=1;
      Selectedindex:=0;
    end;
  end;
end;

解决方案 »

  1.   

    而且到最后一个FILED,要转到下要一行
      

  2.   

    写如下过程:
    procedure NextField(dbgDBGrid: TDBGridEh);
    begin
      if dbgDBGrid.SelectedIndex < (dbgDBGrid.Fieldcount - 1) then
      begin
        dbgDBGrid.SelectedIndex := dbgDBGrid.SelectedIndex + 1;
        if dbgDBGrid.ReadOnly = False then
          while ((dbgDBGrid.Columns.Items[dbgDBGrid.SelectedIndex].ReadOnly) and
            (dbgDBGrid.SelectedIndex < dbgDBGrid.Fieldcount - 1)) do
            dbgDBGrid.SelectedIndex := dbgDBGrid.SelectedIndex + 1;
      end
      else if dbgDBGrid.SelectedIndex = dbgDBGrid.Fieldcount - 1 then
      begin
        dbgDBGrid.DataSource.DataSet.Next;
        if ((dbgDBGrid.DataSource.DataSet.Eof) and (dbgDBGrid.ReadOnly = False))
          then
          dbgDBGrid.DataSource.DataSet.Append;
        dbgDBGrid.SelectedIndex := 0;
      end
      else
        dbgDBGrid.SelectedIndex := 0;
    end;调用:
    procedure Tform1.DBGridEh1KeyPress(Sender: TObject;var Key: Char);
    begin
      if Key = #13 then
        NextField(DBGridEh1);
    end;
      

  3.   

    在TDBGRIDEH的KeyDown事件写入如下代码即可;
    procedure Tfrm.DBGrid7KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
    if key = vk_return then
       PostMessage((Sender As TDbGrid).Handle,wm_keydown,vk_tab,0);
    end;
      

  4.   

    在它的属性optionseh中dghentegastabs 设为true即可
      

  5.   

    我记得也是有一个属性可以设置的
    好像是enterastab但是印象不是很深了
      

  6.   

    TDBGRIDEH设置回车跳至下一个字段不需要写代码:在 OPERATIONEH 下有个 DGENTERASTAB,该为TRUE就可以了,不过如果你将FORM的KEYPRIVEW设置为TRUE,有时会出问题。
      

  7.   

    回复人: must0001(飞鸟) ( ) 信誉:100  2005-10-18 12:50:00  得分: 0  
     
     
       TDBGRIDEH设置回车跳至下一个字段不需要写代码:在 OPERATIONEH 下有个 DGENTERASTAB,该为TRUE就可以了,不过如果你将FORM的KEYPRIVEW设置为TRUE,有时会出问题。
      
     
      

  8.   

    回复人: must0001(飞鸟) ( ) 信誉:100  2005-10-18 12:50:00  得分: 0  
     
     
       TDBGRIDEH设置回车跳至下一个字段不需要写代码:在 OPERATIONEH 下有个 DGENTERASTAB,该为TRUE就可以了,不过如果你将FORM的KEYPRIVEW设置为TRUE,有时会出问题。