Как запретить клавише реагировать на Enter и назначить ей пробел

Гость_Делфи
Дата: 13.10.2004 11:06:06
В программе переход по всем объектам осуществляется по Enter вместо Tab, но клавиши реагируют на Enter выполнением процедур, нужно переназначить им пробел для выполнения процедур.
переход по объектам осуществляется так, кладется на KeyPress:
if Key=#13 then
begin
FindNextControl(Sender as TWinControl,True,True,False).
SetFocus;
Key:=#0;
end;
KirillovA
Дата: 13.10.2004 11:15:47
зарегись - потом ответют
tygra
Дата: 13.10.2004 11:25:50
А надо приучать пользователей к Tabу, хватит уж досовские привычки использовать...

Ну или там же проверяй - если нажали пробел, то дергай процедуру. Правда кнопка и так на пробел отрабатывает.

-- Tygra's --
softwarer
Дата: 13.10.2004 11:42:20
Советую обратить внимание на следующую процедуру. Полагаю, Ваши проблемы стоит решать, отталкиваясь именно отсюда. Хотя я разделяю сомнения в том, стоит ли их решать.

procedure TWinControl.CNKeyDown(var Message: TWMKeyDown);
var
  Mask: Integer;
begin
  with Message do
  begin
    Result := 1;
    if IsMenuKey(Message) then Exit;
    if not (csDesigning in ComponentState) then
    begin
      if Perform(CM_CHILDKEY, CharCode, Integer(Self)) <> 0 then Exit;
      Mask := 0;
      case CharCode of
        VK_TAB:
          Mask := DLGC_WANTTAB;
        VK_LEFT, VK_RIGHT, VK_UP, VK_DOWN:
          Mask := DLGC_WANTARROWS;
        VK_RETURN, VK_EXECUTE, VK_ESCAPE, VK_CANCEL:
          Mask := DLGC_WANTALLKEYS;
      end;
      if (Mask <> 0) and
        (Perform(CM_WANTSPECIALKEY, CharCode, 0) = 0) and
        (Perform(WM_GETDLGCODE, 0, 0) and Mask = 0) and
        (GetParentForm(Self).Perform(CM_DIALOGKEY,
        CharCode, KeyData) <> 0) then Exit;
    end;
    Result := 0;
  end;
end;