Вопрос
Как отловить нажатие 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 Сообщество Чайников
Контактная информация