delphi 修改代碼補全的快捷鍵(由Ctrl+Space 改為 Ctrl + alt + Space)


delphi 的IDE快捷鍵與輸入法切換鍵中突,以往的解決方法是下載一個ImeTool修改 windows 系統的快捷鍵

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

本方法采用 Open Tools API 編寫是一個組件。安裝方法:

菜單-->Component -->install Component 然后選擇此本單元,然后就瞎折騰吧。就好了。

源碼下載

D7_KeyMapping下載 XE8_KeyMapping下載

 1 unit EagleBufferList;
 2 
 3 interface
 4 
 5 procedure Register;
 6 
 7 implementation
 8 
 9 uses Windows, Classes, SysUtils, Menus, ToolsAPI, Controls;
10 
11 type
12   TBufferList = class(TNotifierObject, IUnknown, IOTANotifier, IOTAKeyboardBinding)
13     function GetBindingType: TBindingType;
14     function GetDisplayName: string;
15     function GetName: string;
16     //指定快捷鍵
17     procedure BindKeyboard(const BindingServices: IOTAKeyBindingServices);
18   protected
19     procedure CodeCompletion(const Context: IOTAKeyContext; KeyCode: TShortcut; var BindingResult: TKeyBindingResult);
20   end;
21 
22 resourcestring
23   sBufferList = 'Eagle''s Buffer List';
24 
25   // register this key binding
26 procedure Register;
27 begin
28   (BorlandIDEServices as IOTAKeyBoardServices).AddKeyboardBinding(TBufferList.Create);
29 end;
30 
31 { TBufferList }
32 
33 // the code to bind key
34 procedure TBufferList.BindKeyboard(const BindingServices: IOTAKeyBindingServices);
35 begin
36   BindingServices.AddKeyBinding([ShortCut(Ord('P'), [ssShift, ssCtrl, ssAlt])], CodeCompletion,
37     Pointer(csCodeList or csManual));
38   BindingServices.AddKeyBinding([ShortCut(Ord('O'), [ssShift, ssCtrl, ssAlt])], CodeCompletion,
39     Pointer(csParamList or csManual));
40   BindingServices.AddKeyBinding([ShortCut(Ord(' '), [ssCtrl, ssAlt])], CodeCompletion,
41     Pointer(csCodeList or csParamList or csManual));
42   { 1,2句是原作者寫的
43     3句是我加的 把代碼補完快捷鍵 替換為 ctrl + alt + space
44   }
45 end;
46 
47 // do code completion
48 procedure TBufferList.CodeCompletion(const Context: IOTAKeyContext; KeyCode: TShortcut;
49   var BindingResult: TKeyBindingResult);
50 begin
51 
52   (Context.EditBuffer.TopView as IOTAEditActions).CodeCompletion(Byte(Context.Context));
53   BindingResult := krHandled;
54 
55 end;
56 
57 function TBufferList.GetBindingType: TBindingType;
58 begin
59   Result := btPartial;
60 end;
61 
62 function TBufferList.GetDisplayName: string;
63 begin
64   Result := sBufferList;
65 end;
66 
67 function TBufferList.GetName: string;
68 begin
69   Result := 'EagleKing.BufferList'; // do not localize
70 end;
71 
72 end.
EagleBufferList.pas

附:delphi 進階基礎技能說明


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM