СообЧа > База Знаний > Программирование > Delphi

Вопрос

Как отловить нажатие Enter в TEdit?

Ответ

Чтобы сделать в духе Windows, то добавь к Edit один TButton, с свойством default := True, обработчик OnClick которой будет делать нужную работу.

Другие варианты, чреваты тем, что может сработать не то, что ожидается.
Вот последовательность как будут вызываться обработчики при нажатии Enter

1. OnClick кнопки default
2. OnClick формы, если у нее KeyPreview := True;
3. OnKeyDown/KeyPress/KeyUp контрола имеющего фокус ввода.

Это особенность роли, которую этой клавише обычно назначают в win приложениях. Обрати также внимание на свойство TButton Cancel — оно заставляет срабатывать кнопку при нажатии Esc

Для того чтобы разобраться в этих моментах попробуй неколько вариантов, снимая комментарии:

procedure TForm1.Button1Click(Sender: TObject);
begin
    //Button1.Default := True;
    ShowMessage('Key1');
end;

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
    //KeyPreview := True;
    if Key = #13 then
        begin
     ShowMessage('Key2');
      Key := #0;
        end;
end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if key = #13 then
        ShowMessage('Key3');
end;

Из конференции Delphi



Copyright © 2000-2004 Сообщество Чайников
Контактная информация