• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

delphi修改代码补全的快捷键(由Ctrl+Space改为Ctrl+alt+Space)(通过修改OpenTool生效 ...

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

delphi 的IDE快捷键与输入法切换键中突,以往的解决方法是下载一个ImeTool修改 windows 系统的快捷键

在 xp win7 都好使,但在win 10经常是修改完后,重启又失效了。

本方法采用 Open Tools API 编写是一个组件。安装方法:

菜单-->Component -->install Component 然后选择此本单元,然后就瞎折腾吧。就好了。

源码下载

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));
  BindingServices.AddKeyBinding([ShortCut(Ord(' '), [ssCtrl, ssAlt])], CodeCompletion,
    Pointer(csCodeList or csParamList or csManual));
  { 1,2句是原作者写的
    3句是我加的 把代码补完快捷键 替换为 ctrl + alt + space
  }
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.

http://www.cnblogs.com/lackey/p/5373761.html


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
delphi获取网卡信息(支持多网卡)发布时间:2022-07-18
下一篇:
分析公司Delphi Digital称比特币为“投资资产类别之王”发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap