创建可以插入Office的ActiveX控件

字体大小: 中小 标准 ->行高大小: 标准
在微软的Word里选择插入菜单,然后点击对象,会显示一个可以"插入"的控件的列表,然后我们就可以选择可以插入的ActiveX控件了,但有一个问题在这个列表中我们无法找到用Delphi编写的ActiveX控件。这是为什么呐?

究其原因是,用Delphi创建的ActiveX控件少注册了一个注册表项,而且类型库编辑器也没有提供一个选项允许我们改变ActiveX的属性,我们需要添加的这个注册表的键值处在注册表的HKEY_CLASSES_ROOT中ActiveX的类标示符部分。 就象下面

HKEY_CLASSES_ROOT->YourControl.TheClass->Insertable 

 

最笨的办法是使用RegEdit来编辑注册表,更好的办法是通过程序来自动生成。

1. 打开包含ActiveX控件的实现单元。

2. 添加Uses Registry,Windows,….

3. 修改INITIALIZATION(初始化部分)添加类似下面的函数

procedure MoreKeys; 

const 

  C_KEY: String = 'YourControl.TheClass'; // 你的控制标示符

var 

  oReg: TRegistry; 

begin 

  oReg := TRegistry.Create; 

 

  try 

  oReg.OpenKey(HKEY_CLASSES_ROOT); 

  oReg.OpenKey(C_Key + '\Insertable',True); 

  finally 

  oReg.CloseKey; 

  oReg.Free; 

  end; 

 

end; 

 

initialization 

  TActiveFormFactory.Create( 

  ComServer, 

  TActiveFormControl, 

  ... ); 

  MoreKeys; 

 

End. 

 

一切OK了

此文章由 http://www.ositren.com 收集整理 ,地址为: http://www.ositren.com/htmls/68686.html