如何改变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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

martian6125

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值