比如我有一个窗体有一个菜单项的ShortCut是Enter,窗体上还有10个Edit控件,全部也都OnKeyDown事件相应Enter。我发现只要我按Enter,一律是快捷键的Enter处理此消息,没有办法让Editer再相应了。感觉应该在窗体的OnShortCut事件中找解决方法,但是搞不定的,无论我在里面调用Abort还是把Handled设置为False,都没有用的。应该如何处理的啊?

解决方案 »

  1.   

    判断一下焦点在那个控件上
    procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
      if (TEdit(Sender).Focused) and (Key = 13) then
      begin
        Memo1.Lines.Add('TForm1.Edit1KeyDown' + IntToStr(Key));
      end
    end;
      

  2.   

    问题是Edit的OnkeyDown事件根本没有机会响应到Enter键消息,一律是快捷键响应了去了。但是我不想在快捷键响应事件中去判断焦点,也不可能一个一个控件去判断if,界面上如果有十几个Edit那会是很臃肿的处理方法