Mega Code Archive

 
Categories / Delphi / Hardware
 

Keyboard Binding

Title: Keyboard Binding Question: How to set your own shortcut keys while working with delphi editor? If you want your own piece of shortcut key to perform a certain action for you then this code will help Answer: {Include this unit in a delphi package, and install the package. Now, if you press ctrl + d you will get the 'This was written by Subha Narayanan' in your editor window. The actual process is very simple. We use the interface TNotifier Object and IOTAkeyboardbinding to create our own interface. our main key to perform this action is the procedure 'Dupline' } -------------------------------------------------------------------------------- unit DupLineBinding; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, menus, ToolsApi; type TDupLineBinding = class(TNotifierObject, IOTAKeyboardBinding) private { Private declarations } protected { Protected declarations } public { Public declarations } Procedure DupLine(Const Context: IOTAKeyContext; KeyCode: TShortCut; Var BindingResult : TKeyBindingResult); {IOTAKeyBoardBinding} function GetBindingType : TBindingType; function GetDisplayName : string; function GetName : string; procedure BindKeyboard(const BindingServices: IOTAKeyBindingServices); published { Published declarations } end; procedure Register; implementation procedure Register; begin (BorlandIDEServices as IOTAKeyBoardServices).AddKeyBoardBinding(TDupLineBinding.Create); end; function TDupLineBinding.GetBindingType: TBindingType; begin Result := btPartial; end; function TDupLineBinding.GetDisplayName ; begin Result := 'Subha Line Binding'; {The way it shoudl appear in the delphi ide editor window} end; function TDupLineBinding.GetName ; begin Result := 'sn.dupline'; {Should be unique} end; procedure TDupLineBinding.DupLine(Const Context: IOTAKeyContext; KeyCode: TShortCut; Var BindingResult : TKeyBindingResult); var ep : IOTAEditPosition; eb : IOTAEditBlock; r, c : Integer; begin {Actual place where the writting into editor takes place} try ep := Context.EditBuffer.EditPosition; ep.Save; r := ep.Row; c := ep.Column; eb := Context.EditBuffer.EditBlock; ep.MoveBOL; eb.Reset; eb.BeginBlock; eb.Extend(Ep.Row+1, 1); eb.EndBlock; eb.Copy(False); ep.MoveBOL; ep.Paste; ep.Move(r,c); finally ep.Restore; end; BindingResult := krHandled; end; procedure TDupLineBinding.BindKeyboard(const BindingServices: IOTAKeyBindingServices); {Here we specify the shortcut key which should do the action} begin BindingServices.AddKeyBinding([Shortcut(Ord('D'),[ssCtrl])],DupLine,nil); end; end.