如何代码改变Delphi的快捷键

如果说Delphi的IDE有什么优势的话,那么我想就是它本身就是由Delphi编写而成,因此我们能定制Delphi的IDE环境,通过Delphi的ToolsAPI的Com接口。     
    
            下面这个例子使用IOTAKeyboardBinding接口,实现对快捷键的重新绑定,相关的接口定义见ToolsAPI.pas。源码很简单,相信你一看就懂。该例子用来修改与中文环境冲突的Code     Completion得快捷键,改成Ctrl+Alt+Shift+P和Ctrl+Alt+Shift+O
  1   // EagleBufferList.pas, 2002.5 . 24      
  2     
  3      {      
  4     Pan     Ying,Zero     Studio     
  5     All     Right     Reserved.     
  6     
  7     The     Demo     show     how     to     change     Delphi's     Key     Binding,just     in     Delphi     
  8     press     Ctrl+Alt+Shift+P     to     use     Code     Completion.You     can     contact     me     by     
  9     sending     e-mail     to     me     (panying@sina.com)     
 10     
 11     Some     code     from     Delphi's     ToolsAPI     Demo.     
 12     
 13     Attention:     
 14     This     software     is     provided     'as-is',     without     any     express     or     
 15     implied     warranty.     In     no     event     will     the     author     be     held     liable     
 16     for     any     damages     arising     from     the     use     of     this     software.     
 17     
 18     This     unit     is     free     to     use     but     the     origin     of     this     software     
 19     must     not     be     misrepresented,     you     must     not     claim     that     you     
 20     wrote     the     original     software.     
 21     
 22     Feel     free     to     use     this     component     in     your     product     including     
 23     commercial     applications.     
 24     
 25     If     You     alert     this     component's     code     to     make     it     better,     
 26     please     remember     to     tell     me     about     it     ,     let's     to     make     it     better     
 27     together.     
 28     
 29     This     attention     may     not     be     removed     or     altered     from     any     source     
 30     distribution.     
 31     
 32     Feedback:     
 33     E-Mail:     panying@sina.com     
 34     HomePage:http://myzeroworld.yeah.net     
 35     
 36     Version     1.1     
 37     Remove     some     useless     code.     
 38     Version     1.0     
 39     Initial     Version.     
 40      }      
 41     
 42     unit     EagleBufferList;     
 43     
 44     interface     
 45     
 46      procedure      Register;     
 47     
 48     implementation     
 49     
 50     uses     Windows,     Classes,     SysUtils,Menus,     ToolsAPI,     Controls     ;     
 51     
 52      type      
 53         TBufferList      =      class(TNotifierObject,     IUnknown,     IOTANotifier,     
 54             IOTAKeyboardBinding)             
 55              function      GetBindingType:     TBindingType;     
 56              function      GetDisplayName:     string;     
 57              function      GetName:     string;     
 58              procedure      BindKeyboard( const      BindingServices:     IOTAKeyBindingServices);     
 59         protected             
 60              procedure      CodeCompletion( const      Context:     IOTAKeyContext;     KeyCode:     TShortcut;     
 61                  var      BindingResult:     TKeyBindingResult);     
 62          end ;     
 63           
 64     resourcestring     
 65         sBufferList      =       ' Eagle''s     Buffer     List ' ;         
 66     
 67      // register     this     key     binding     
 68      procedure      Register;     
 69      begin      
 70         (BorlandIDEServices     as     IOTAKeyBoardServices).AddKeyboardBinding(TBufferList.Create);         
 71      end ;     
 72     
 73      {      TBufferList      }      
 74     
 75     
 76      // the     code      to      bind     key     
 77      procedure      TBufferList.BindKeyboard( const      BindingServices:     IOTAKeyBindingServices);     
 78      begin      
 79         BindingServices.AddKeyBinding([ShortCut(Ord( ' P ' ),     [ssShift,     ssCtrl,     ssAlt])],     CodeCompletion,     Pointer(csCodeList      or      csManual));     
 80         BindingServices.AddKeyBinding([ShortCut(Ord( ' O ' ),     [ssShift,     ssCtrl,     ssAlt])],     CodeCompletion,     Pointer(csParamList      or      csManual));         
 81      end ;     
 82     
 83      // do      code     completion     
 84      procedure      TBufferList.CodeCompletion( const      Context:     IOTAKeyContext;     
 85         KeyCode:     TShortcut;      var      BindingResult:     TKeyBindingResult);     
 86      begin      
 87     
 88         (Context.EditBuffer.TopView     as     IOTAEditActions).CodeCompletion(Byte(Context.Context));     
 89         BindingResult     : =      krHandled;     
 90     
 91      end ;     
 92     
 93      function      TBufferList.GetBindingType:     TBindingType;     
 94      begin      
 95         Result     : =      btPartial;     
 96      end ;     
 97     
 98      function      TBufferList.GetDisplayName:     string;     
 99      begin      
100         Result     : =      sBufferList;     
101      end ;     
102     
103      function      TBufferList.GetName:     string;     
104      begin      
105         Result     : =       ' EagleKing.BufferList ' ;        // do       not      localize     
106      end ;     
107     
108      end .     
109

转载于:https://www.cnblogs.com/zscy/archive/2008/05/21/1203968.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值