FormShortCut MainForm 和 二级FORM

发现,主FORM 定义的快捷键,在二级FORM里也有效。

反过来,就无效。

这样的话,就要考虑 快捷键的冲突问题 了,本来以为不同的FORM 是独立的。

http://codeverge.com/embarcadero.delphi.vcl.using/shortcuts-of-the-main-form-acces/1076501

John Schmidt wrote:

> Hi,
> 
> I experience problems when using keys in nonmodal shown SDI forms of
> the application if they are used as shortcuts in the main form. Iif
> the sub-form is shown modal than all works fine. How can I work
> around this 'feature'? - It's URGENT! - Thanks!

The behaviour is actually intentional, it is for the support of typical
SDI apps where only the main form has a menu that is "shared" by the
child forms (an app like the IDE itself). Quite a bit of the VCL
behaviour is dictated by the requirements of the IDE...

To fix this problem you have to override the main form's IsShortcut
method, like this:

  public
    function IsShortCut(var Message: TWMKey): Boolean; override;

function TMainform.IsShortcut( Var Message: TWMKey ): Boolean;
begin
  if Screen.Activeform <> self then
    Result := false
  else
    Result := inherited IsShortcut(Message);
end;    

This way the main form will only process shortcuts when it itself is
the active form.

-- 
Peter Below (TeamB)  
Don't be a vampire (http://slash7.com/pages/vampires), 
use the newsgroup archives :
http://codenewsfast.com
http://groups.google.com
原文地址:https://www.cnblogs.com/CodeGear/p/4261703.html