如题!

解决方案 »

  1.   

    Ctrl+S 这种 只有菜单才有的---shotcut(好象)
      

  2.   

    是快捷键 Ctrl+S 不是单个键 呀。。
      

  3.   

    TActionList最实用的方法:
    放置一个TActionList控件
    在该控件中添加一个TAction
    将其ShortCut属性设置为Ctrl+S
    将Button的Action属性指定为添加的TAction
    事件在Action.OnExecute中写
    菜单项也可以指向Action
    用Action控制权限、显示最方便。
      

  4.   

    //这个是不推荐,但可以下班前实现的方法
    object Form1: TForm1
      KeyPreview = True
      OnKeyDown = FormKeyDown
    endprocedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
      case Key of
        Ord('S'): if ssCtrl in Shift then Button1.Click;
      end;
    end;
      

  5.   

    要么窗体PreviewKey,然后在窗体的键盘事件里面拦截消息来处理。
    要么用ActionList来写。
    单个当前激活窗体操作比较可靠,但是,如果是多个当前激活的东西,就麻烦了。比如:窗体上有多个frame,每个frame都有保存按钮,每个都是Ctrl+S,就不好处理了。但是都有点问题。我以前遇到过,后来处理起来问题多多,就放弃了,直接用加速键方式来处理了。