zoukankan      html  css  js  c++  java
  • 如何改变Delphi的快捷键 DELPHI

    如何改变Delphi的快捷键 - DELPHI
    如果说Delphi的IDE有什么优势的话,那么我想就是它本身就是由Delphi编写而成,因此我们能定制Delphi的IDE环境,通过Delphi的ToolsAPI的Com接口。

    下面这个例子使用IOTAKeyboardBinding接口,实现对快捷键的重新绑定,相关的接口定义见ToolsAPI.pas。源码很简单,相信你一看就懂。该例子用来修改与中文环境冲突的Code Completion得快捷键,改成Ctrl Alt Shift P和Ctrl Alt Shift O,如果你遇上什么问题,请写信给我。

    //EagleBufferList.pas,2002.5.24

    {

    Pan Ying,Zero Studio

    All Right Reserved.

    The Demo show how to change Delphi's Key Binding,just in Delphi

    press Ctrl Alt Shift P to use Code Completion.You can contact me by

    sending e-mail to me (panying@sina.com)

    Some code from Delphi's ToolsAPI Demo.

    Attention:

    This software is provided 'as-is', without any express or

    implied warranty. In no event will the author be held liable

    for any damages arising from the use of this software.

    This unit is free to use but the origin of this software

    must not be misrepresented, you must not claim that you

    wrote the original software.

    Feel free to use this component in your product including

    commercial applications.

    If You alert this component's code to make it better,

    please remember to tell me about it , let's to make it better

    together.

    This attention may not be removed or altered from any source

    distribution.

    Feedback:

    E-Mail: panying@sina.com

    HomePage:http://myzeroworld.yeah.net

    Version 1.1

    Remove some useless code.

    Version 1.0

    Initial Version.

    }

    unit EagleBufferList;

    interface

    procedure Register;

    implementation

    uses Windows, Classes, SysUtils,Menus, ToolsAPI, Controls ;

    type

    TBufferList = class(TNotifierObject, IUnknown, IOTANotifier,

    IOTAKeyboardBinding)

    function GetBindingType: TBindingType;

    function GetDisplayName: string;

    function GetName: string;

    procedure BindKeyboard(const BindingServices: IOTAKeyBindingServices);

    protected

    procedure CodeCompletion(const Context: IOTAKeyContext; KeyCode: TShortcut;

    var BindingResult: TKeyBindingResult);

    end;

    resourcestring

    sBufferList = 'Eagle''s Buffer List';

    //register this key binding

    procedure Register;

    begin

    (BorlandIDEServices as IOTAKeyBoardServices).AddKeyboardBinding(TBufferList.Create);

    end;

    { TBufferList }

    //the code to bind key

    procedure TBufferList.BindKeyboard(const BindingServices: IOTAKeyBindingServices);

    begin

    BindingServices.AddKeyBinding([ShortCut(Ord('P'), [ssShift, ssCtrl, ssAlt])], CodeCompletion, Pointer(csCodeList or csManual));

    BindingServices.AddKeyBinding([ShortCut(Ord('O'), [ssShift, ssCtrl, ssAlt])], CodeCompletion, Pointer(csParamList or csManual));

    end;

    //do code completion

    procedure TBufferList.CodeCompletion(const Context: IOTAKeyContext;

    KeyCode: TShortcut; var BindingResult: TKeyBindingResult);

    begin

    (Context.EditBuffer.TopView as IOTAEditActions).CodeCompletion(Byte(Context.Context));

    BindingResult := krHandled;

    end;

    function TBufferList.GetBindingType: TBindingType;

    begin

    Result := btPartial;

    end;

    function TBufferList.GetDisplayName: string;

    begin

    Result := sBufferList;

    end;

    function TBufferList.GetName: string;

    begin

    Result := 'EagleKing.BufferList'; //do not localize

    end;

    end.

    如果你对组件或者向导编写感兴趣,到CNPack( http://cnpack.yeah.net )来看看。

    Pan Ying,2002.5.25

    本文来自: 书部落-电子书下载(www.shubulo.com) 详细出处参考:http://www.shubulo.com/thread-37988-1-3.html

  • 相关阅读:
    FSCapture 取色工具(绿色版 )
    Java EE.JavaBean
    Java EE.JSP.内置对象
    Java EE.JSP.动作组件
    Java EE.JSP.指令
    Java EE.JSP.脚本
    21、多态与多态性、内置方法、反射、异常处理
    20、继承的应用、super、组合
    19、property、绑定方法(classmethod、staticmethod)、继承
    18、类
  • 原文地址:https://www.cnblogs.com/martian6125/p/9631338.html
Copyright © 2011-2022 走看看