Cambiar el Tab por Enter en todo el programa.

1- se define un procedimiento que se le tiene que asignar en el on create de la siguiente forma:

procedure TFInicial.FormCreate(Sender: TObject);
begin
  Application.OnMessage :=  AppMessage;
end;

2 – y el procedimiento es el siguiente:

Procedure TFInicial.AppMessage(var Msg: TMSg; Var Handled:Boolean);
var
 actual : TWincontrol;
begin
  if Msg.message = WM_KEYDOWN then
  begin

    // esto es para controlar que con la flecha abajo se desplegen las
    // listas
    if Msg.wParam = VK_DOWN then
    begin
      Actual := Screen.ActiveControl;
      if Actual is TDBLookupComboBox then
        if not TDBLookupComboBox(Screen.ActiveForm.ActiveControl).listVisible then
                    TDBLookupComboBox(Screen.ActiveForm.ActiveControl).DropDown;

      // si utilizas las RX
      if Actual is TRxDBLookupCombo then
        if not TRxDBLookupCombo(Screen.ActiveForm.ActiveControl).listVisible then
               TRxDBLookupCombo(Screen.ActiveForm.ActiveControl).DropDown;


      if Actual is TComboBox then
         SendMessage(TComboBox(Screen.ActiveForm.ActiveControl).Handle,CB_SHOWDROPDOWN,-1,0);

      // se pueden añadir mas controles....

      end;

    // y aqui es el control del intro.
    if Msg.wParam = VK_RETURN THEN
    begin
      Actual := Screen.ActiveControl;
      // para los edit.
      if (Actual is TCustomEdit) and not (Actual is TCustomMemo) then
        Msg.wParam := VK_TAB;

        // para los memo. Con ctrl + enter se salta de linea dentro del
        // memo, si solo es intro salta al siguiente control
        if (Actual is TCustomMemo) and
           (HiWord(GetKeyState(VK_CONTROL)) = 0)then
           Msg.wParam := VK_TAB;

        // para los lookup
        if Actual is TDBLookupComboBox then
          if not TDBLookupComboBox(Actual).listVisible then
            Msg.wParam := VK_TAB;

        // Si utilizas las RX
        if Actual is TRxDBLookupCombo then
          if not TRxDBLookupCombo(Actual).listVisible then
             Msg.wParam := VK_TAB;

        // Los combobox
        if Actual is TCustomComboBox then
           if not TCustomComboBox(Actual).DroppedDown then
              Msg.wParam := VK_TAB;

         // el radiobutton
         if Actual is TRadioButton then
           Msg.wParam := VK_TAB;

         // en el grid
         if Actual is TDBGrid then
            if (TDBGrid(Actual).ReadOnly) or
               (HiWord(GetKeyState(VK_CONTROL)) = 1)then
               Msg.wParam := VK_TAB

         // o esto otro Con Ctrl + intro siguiente celda con
         // ctrl + shift + intro celda anterior
         // es complicado pero es por no liar con el intro solo
         // que siempre pasa de un control a otro.
         if Actual is TDBGrid then
         begin
            if (TDBGrid(Actual).ReadOnly) or
               (HiWord(GetKeyState(VK_CONTROL)) = 0) then
               Msg.wParam := VK_TAB
            else
               if not(HiWord(GetKeyState(VK_SHIFT)) = 0) then
               begin
                 if TDBGrid(Actual).selectedindex > 0 then             { increment the field }
                    TDBGrid(Actual).selectedindex := TDBGrid(Actual).selectedindex -1
                 else
                    TDBGrid(Actual).selectedindex := TDBGrid(Actual).fieldcount -1;
                 end
            else
            begin
              if TDBGrid(Actual).selectedindex < (TDBGrid(Actual).fieldcount -1) then             { increment the field }
                 TDBGrid(Actual).selectedindex := TDBGrid(Actual).selectedindex +1
              else
                 TDBGrid(Actual).selectedindex := 0;
              end;
         end;


         // ListBox
         if Actual is TCustomListBox then
            Msg.wParam := VK_TAB;

         // TabControl
         if Actual is TCustomTabControl then
            Msg.wParam := VK_TAB;

         // Aqui se pondrían todos los controles que usamos en la
         // aplicación y necesitamos cambiar el tab por intro.
         // de esta forma te despreocupas de cuantos añades y es más
         // limpio el código

         end;
     end;
  end;