如题大虾来帮一下忙,谢谢!

解决方案 »

  1.   

    API没有,但可以这样设:
    MenuItem.ShortCut := ShortCut(Word('A'), [ssCtrl]);  // Ctrl+A
      

  2.   

    死树说的方法我知道,现在我并不能设计一个菜单,所以只能通过API来完成,有什么方法吗?
      

  3.   

    要解决这个问题,有两个工作要做:
    Ⅰ:如何把用户菜单项加入系统菜单, 
    Ⅱ:如何才能响应这一菜单项。 
    解决问题Ⅰ:首先需要获取系统菜单的句柄,这一点可用API函数getsystemmenu()来获取,有了系统菜单句柄,用API函数appendmenu()向系统菜单中加入用户菜单选项了。 解决问题Ⅱ:需要重载WM_SYSCOMMAND或WM_MENUSELECT消息。当用户从菜单中选一项时,系统便会发出WM_COMMMAND消息,而对于系统菜单,则会发出WM_SYSCOMMAND消息,重载这个消息,并判断选中菜
    单的ID值是否为用户设定值便可以了。
    在Private声明部分,说明了过程,procedure User_SysMenu(var msg:twmmenuselect); message wm_syscommand;用于响应用户菜单事件。procedure TForm1.user_sysmenu(var msg:TWMMENUSELECT);
    begin
        if msg.iditem=100 then Label1.Caption := '你已经成功了,真是不可思议'
                          else inherited; { 作缺省处理,必须调用这一过程}
    end;procedure TForm1.Button3Click(Sender: TObject);
    Var
        Menutemp : HMENU ;
    begin
        MenuTemp := GetSystemMenu(handle,false); //获取系统菜单句柄
        AppendMenu(MenuTemp,MF_SEPARATOR,0,nil);
        AppendMenu(MenuTemp,MF_STRING,100,'测试'); //加入用户菜单
    end;
      

  4.   

    To: d0347(旭日升)
    我的方法虽然和你得不太一样,但原理都是差不多的我现在的问题在于怎样为某个菜单项设置快捷键