正在将以前自己写的for 2005和7版本的IDE专家移植到Delphi 2006,发现OTA的问题很多啊,
看来得等update2来修正了

解决方案 »

  1.   

    不一定是Bug吧,Delphi的Open Tools API几乎每个版本都有一些变化,有些版本更是根本性的改变。Borland自己对于OTA是这样说的,“对于OTA我们不会给出官方Specification,而仅仅给出与某个版本相关的帮助,目的是为了保证我们对于OTA有进行变更的余地,而不会将OTA的规范‘确定下来’。这样做可以更好的适应新的集成开发环境的变化需要。”
      

  2.   

    to Scarlette(Lord of Borland) 
      您好, 我现在遇到两个问题, 您能否帮我看看,
    问题1. 我现在的Code Completion的快捷键已经绑定到alt+space, 用以下方法绑定:
     BindingServices.AddKeyBinding([ShortCut(VK_SPACE, [ssAlt])],
    CodeCompletion, Pointer(csCodeList or csManual));现在我在IDE中新建一个application
    代码如下:unit Unit3;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs;type
      TForm3 = class(TForm)
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form3: TForm3;implementation{$R *.dfm}procedure TFor|end.这里'|'是我光标所在的位置,当我用alt+space 激活Code Completion窗口后,
    回车一下,本来正常的话,应该是TForm3|,但是奇怪的是代码变成了如下:unit Unit3;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs;type
      TForm3 = class(TForm)
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form3: TForm3;implementation{$R *.dfm}procedure TForm3;
    begin     ~~~~~~~~end;end.奇怪吧?我想也有可能是IDE的bug。
      

  3.   

    问题2:
       我用    (OTAEditorServices.TopView as IOTAEditActions).CodeCompletion(csCodelist
          or csManual);来调用 code completion窗口的时候,在失败的时候(由于当前代码环境无法调用出来),发现每次调用,IDE中编辑器的反应速度特别特别慢,简直到了无法输入的地步,
    这在Delphi 7和Delphi2005中都没有达到那么慢的速度,不知能有什么方法提高速度?
    我这么做的主要目的是想在我的专家中实现自动invoke IDE自身的Code Completion,
    类似于CnPack中的代码输入助手的功能。我甚至试了把调用Code Completion的代码
    放在IDE的OnIdle中做,但是还是同样的很慢很慢,不知为何原因。谢谢!
      

  4.   

    这不是bug呀,这应该是增强。
    你可以自己修改代码完成的模板。
      

  5.   

    to DelphiGuy() 
       这个是bug啊,不是代码模板,这个时候Code Completion窗口中只有一条
    "type TForm3", 所以回车后,应该只是完成"TForm3"才对,没想到还给我
    来个分号,再加回车,再加begin..end;
      

  6.   

    那个"type TForm3"只是Code Completion的一个标题名而已,
    它的实际内容可能很多。
    你看看那个classc完成的代码段有多长。
    你应该查看一下你的"type TForm3"的完成内容,这是你自己添加的吧。
      

  7.   

    没有, 这个不是我自己添加的, 它的内容应该不会是 
    TForm3;
    begin
      |
    end;因为这样编译一定通不过的