问题:如何在 Delphi 或 BCB 中使用 VB 做的 ActiveX 控件?
VB:
选择 "New Project" -> "ActiveX",然后直接编译成 Project1.OCX
Delphi or BCB:
选择:"Component"->"Import ActiveX Control..."
在列表中选择出 Project1 控件(看到提示中 Project1.OCX 没问题), 按下 "Install.."
提示加入库,按下 OK, 提示编译,Yes, Project1_TLB 成功 Loaded, 可无论在哪里都找不到控件图标。
解答1:点击Tools菜单->Environment Options->Type Library页,应该发现一项:Ignore special CoClass Flags When Importing,选中它,然后再选中Can Create那一项,那么现在,再尝试去导入那个可怜的ActiveX控件吧(这里要注意,如果你已经导入过一次,那么请把产生的那两个文件 .dcr 和 .pas文件删除,否则将不会刷新)。这次如果还是不能在ActiveX栏中发现那个控件的话,那么只有致电Microsoft或是Borland.
解答2:这个问题搞定了,问题出在 VB,由 Borland Newsgroup 解答。
使用 Delphi 打开 OCX, 看到 CoClass 的"Can Create" 属性为 False. 改为 True 即可。
具体步骤:
delphi->open ocx(在delphi中显示为tlb),修改coClass ->can create为True,refresh后将ocx另存为tlb,import 此tlb即可在组件栏中显示并正常使用。可以使用该ocx中开放的接口(属性或事件等)。
将can create改为True后tlb的变化为在***_tlb.pas中增加了原来封装在ocx中的类的声明和原来pas文件中没有的register到组件栏中的函数:
procedure Register;
begin
RegisterComponents(dtlOcxPage, [原OCX中的类名]);
end;