Keyboard binding 的應用--改變程式碼自動完成的 Hot-key |
|
sryang
尊榮會員 發表:39 回覆:762 積分:920 註冊:2002-06-27 發送簡訊給我 |
在 Delphi 中,程式碼自動完成的功能分為兩個部分 第一部份是當我們輸入一個物件的名稱之後,按「.」就出現一個列表供我們選擇這個物件可用的屬性或方法名稱 第二部份是當我們輸入部分常數、變數或函數的名稱之後,按一個熱鍵,就出現一個列表供我們選擇字首相符的常數、變數或函數 可是,第二部分的熱鍵,預設是 Ctrl-Space,這剛好跟切換中文輸入法的熱鍵衝突 所以,應用 Keoboard binding,我們可以改變這個熱鍵 程式如下:
unit unCodeCompleteKeyBinding; interface procedure Register; implementation uses Windows, Classes, SysUtils, ToolsAPI, Menus, Forms, Dialogs, Controls, ActiveX; type TWCodeCompleteKeyBinding = class(TNotifierObject, IUnknown, IOTANotifier, IOTAKeyboardBinding) procedure CodeCompleteProc(const Context: IOTAKeyContext; KeyCode: TShortCut; var BindingResult: TKeyBindingResult); function GetBindingType: TBindingType; function GetDisplayName: string; function GetName: string; procedure BindKeyboard(const BindingServices: IOTAKeyBindingServices); end; procedure Register; begin (BorlandIDEServices as IOTAKeyBoardServices).AddKeyboardBinding(TWCodeCompleteKeyBinding.Create); end; { TWCodeCompleteKeyBinding } procedure TWCodeCompleteKeyBinding.BindKeyboard( const BindingServices: IOTAKeyBindingServices); begin BindingServices.AddKeyBinding([ShortCut(VK_RIGHT, [ssAlt])], CodeCompleteProc, nil); end; procedure TWCodeCompleteKeyBinding.CodeCompleteProc( const Context: IOTAKeyContext; KeyCode: TShortCut; var BindingResult: TKeyBindingResult); begin (Context.EditBuffer.TopView as IOTAEditActions).CodeCompletion(Byte(Context.Context)); BindingResult := krHandled; end; function TWCodeCompleteKeyBinding.GetBindingType: TBindingType; begin Result := btPartial; end; function TWCodeCompleteKeyBinding.GetDisplayName: string; begin Result := '改Code Complete熱鍵為 Alt-向右'; end; function TWCodeCompleteKeyBinding.GetName: string; begin Result := 'ChangeCodeComplete'; end; end. 將這個 unit 存檔,用一個 package 包起來,然後 compile、install 就 OK 了,這樣寫起程式來就更快了 例如,要輸入 ShowMessage,只要輸入前幾個字,然後按 Alt-→ 就會出現一個列表供你選擇,希望對大家有幫助。 加油喔,喵~
------
歡迎參訪 "腦殘賤貓的備忘錄" http://maolaoda.blogspot.com/ |
阿子
站務副站長 發表:120 回覆:230 積分:201 註冊:2002-03-18 發送簡訊給我 |
在這小弟在提供另一種方式.. 因小弟用習慣 Ctrl-Space 的hot-key 但又不想在IDE中掛多餘的bpl,所以就直接修改windows 的設定,使得windows 在左邊的Ctrl-Space 是不會切換中文輸入法,而右邊的Ctrl-Space 才是切換中文輸入法
所以在Delphi IDE 就可以使用自動完成的功能。 如何修改呢? 請看下方。
//這是將 keyborad 左邊的 Ctrl Space 關掉, 但右邊的 Ctrl Space 還是可以中/英切換. {Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Control Panel\Input Method\Hot Keys] [HKEY_CURRENT_USER\Control Panel\Input Method\Hot Keys\00000010] "Key Modifiers"=hex:02,40,00,00 [HKEY_CURRENT_USER\Control Panel\Input Method\Hot Keys\00000070] "Key Modifiers"=hex:02,40,00,00以上只能在 Windows 2k 以上才可以 從思考取勝一切~q
------
從思考取勝一切~q |
Mickey
版主 發表:77 回覆:1882 積分:1390 註冊:2002-12-11 發送簡訊給我 |
補充: 使得windows 在右邊的Ctrl-Space 是不會切換中文輸入法,而左邊的Ctrl-Space 仍可切換中文輸入法 [HKEY_CURRENT_USER\Control Panel\Input Method\Hot Keys\00000010] "Key Modifiers"=hex:02,80,00,00 [HKEY_CURRENT_USER\Control Panel\Input Method\Hot Keys\00000070] "Key Modifiers"=hex:02,80,00,00 ===================引 用 阿子 文 章=================== 在這小弟在提供另一種方式.. 因小弟用習慣 Ctrl-Space 的hot-key 但又不想在IDE中掛多餘的bpl,所以就直接修改windows 的設定,使得windows 在左邊的Ctrl-Space 是不會切換中文輸入法,而右邊的Ctrl-Space 才是切換中文輸入法 所以在Delphi IDE 就可以使用自動完成的功能。 如何修改呢? 請看下方。 //這是將 keyborad 左邊的 Ctrl Space 關掉, 但右邊的 Ctrl Space 還是可以中/英切換. {Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Control Panel\Input Method\Hot Keys] [HKEY_CURRENT_USER\Control Panel\Input Method\Hot Keys\00000010] "Key Modifiers"=hex:02,40,00,00 [HKEY_CURRENT_USER\Control Panel\Input Method\Hot Keys\00000070] "Key Modifiers"=hex:02,40,00,00 以上只能在 Windows 2k 以上才可以 從思考取勝一切~q |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |