delphi 的IDE快捷键与输入法切换键中突,以往的解决方法是下载一个ImeTool修改 windows 系统的快捷键
在 xp win7 都好使,但在win 10经常是修改完后,重启又失效了。
本方法采用 Open Tools API 编写是一个组件。安装方法:
菜单-->Component -->install Component 然后选择此本单元,然后就瞎折腾吧。就好了。
unit EagleBufferList;interfaceprocedure Register;implementationuses 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 bindingprocedure Register;begin (BorlandIDEServices as IOTAKeyBoardServices).AddKeyboardBinding(TBufferList.Create);end;{ TBufferList }// the code to bind keyprocedure 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 completionprocedure 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 localizeend;end.EagleBufferList.pas
来自: