Отловить нажатие Enter

Гость74
Дата: 16.11.2007 12:06:44
Есть форма F1, которая в динамически создается на другой форме F2.
Надо отловить нажатие на клавишу ENTER, когда фокус находится на любом из элементов формы F1. Если на F1 расположить кнопку со свойством Default = True, то можно "поймать" ENTER через
ONClick этой кнопки. Но меня интересует именно как отловить событие!
На F1 стоит KeyPreview = True
DimaBr
Дата: 16.11.2007 12:16:16
OnKeyPress, OnKeyDown, OnKeyUp формы
Гость74
Дата: 16.11.2007 12:26:15
DimaBr
OnKeyPress, OnKeyDown, OnKeyUp формы


Было бы так просто - не спрашивал бы. Не работает это в случае если форма создана на другой форме
Warstone
Дата: 16.11.2007 12:55:08
Гость74
Было бы так просто - не спрашивал бы. Не работает это в случае если форма создана на другой форме
Мсье давно был у костоправа? Давай сюда pas и dfm от 2-й формы и соотв. pas от первой.
Obrazer
Дата: 16.11.2007 13:24:04
Лови на F1 и передавай в F2
Гость74
Дата: 16.11.2007 13:25:46
Смотрите
Еще одна проблема всплыла - по TAB фокус на созданную форму не передается
Гость74
Дата: 16.11.2007 13:29:02
Obrazer
Лови на F1 и передавай в F2


Так можно, но не хотелось бы мешать код. т.е. F2 - это как законченный контейнер
Obrazer
Дата: 16.11.2007 13:48:41
Гость74
Obrazer
Лови на F1 и передавай в F2

Так можно, но не хотелось бы мешать код. т.е. F2 - это как законченный контейнер

А зачем мешать код?

F1 знает, что на панели лежит форма, у которой возможно реализован обработчик

ъprocedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
Var f: TForm;
begin
  if Panel1.Controls[0] = nil then exit;
  f := TForm(Panel1.Controls[0]);
  if Assigned(f.OnKeyPress) then
    f.OnKeyPress(Sender, Key);
end;

Можно еще усложнить для поиска формы на панели, а не тупой выбор Controls[0]
Гость74
Дата: 16.11.2007 14:26:22
Все верно, я так бы и написал примерно...
Но что-то как-то некрасиво. ведь F2 полноценная форма, вроде как сама должна ловить...
Хотя можно и на этом остановиться :-)