那位大虾研究过ToolsAPI,烦请资料相送

解决方案 »

  1.   

    Some code from Delphi's ToolsAPI Demo. Attention: 
    This software is provided 'as-is', without any express or 
    implied warranty. In no event will the author be held liable 
    for any damages arising from the use of this software. This unit is free to use but the origin of this software 
    must not be misrepresented, you must not claim that you 
    wrote the original software. Feel free to use this component in your product including 
    commercial applications. If You alert this component's code to make it better, 
    please remember to tell me about it , let's to make it better 
    together. This attention may not be removed or altered from any source 
    distribution. 
    Feedback: 
    E-Mail: [email protected] 
    HomePage:http://myzeroworld.yeah.net Version 1.1 
    Remove some useless code. 
    Version 1.0 
    Initial Version. 
    } 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));   
    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.