如何使用Delphi在activeX中创建已发布的过程/函数?
可能重复:如何使用Delphi在activeX中创建已发布的过程/函数?,delphi,activex,publish,Delphi,Activex,Publish,可能重复: 我正在使用Delphi的ActiveX控件实现。在我的主课上,我有: type TezDICOMX = class(TActiveForm, IezDICOMX) ToolBar1: TToolBar; OpenBtn: TSpeedButton; PreviousBtn: TSpeedButton; 。。。。 我将这些代码添加到类中 published procedure abc; safecall; 之后,我
我正在使用Delphi的ActiveX控件实现。在我的主课上,我有:
type
TezDICOMX = class(TActiveForm, IezDICOMX)
ToolBar1: TToolBar;
OpenBtn: TSpeedButton;
PreviousBtn: TSpeedButton;
。。。。
我将这些代码添加到类中
published
procedure abc; safecall;
之后,我构建项目并注册ActiveX服务器。它生成ezDICOMax.ocx。我打开VisualStudio,删除之前嵌入的ezDICOM activeX控件,然后嵌入新控件。我将activeX控件拖到设计中,并将其命名为_ezdicom。
因此,正如我所想,我应该可以调用ezdicom.abc(),但当我这样做时,编译器会抱怨
'AxezDICOMax.AxezDICOMX' does not contain a definition for 'abc' and no extension method 'abc' accepting a first argument of type 'AxezDICOMax.AxezDICOMX' could be found (are you missing a using directive or an assembly reference?)
我做错了什么?如何使用Delphi在ActiveX控件中创建已发布的过程/函数?
如果我更改类中现有的函数/过程并执行所有注册、嵌入步骤,则从C#调用时该函数/过程的结果也会更改,因此我认为activeX控件已更新到我的Delphi源代码中,但我仍然无法添加已发布的过程/函数。您需要:
在这种情况下,实现器方法的Delphi可见性是不相关的:类应该通过接口指针使用,而不是通过Delphi类实例指针使用。因此,我建议对其进行保护,就像类型库编辑器生成的那样。我发现这是Visual Studio的一个问题。因为我更改了activeX控件的接口,所以我必须删除项目中对activeX控件的引用,然后再次添加它。如果我们不更改接口,只需注销并注册activeX控件就足够了。您是否在delphi中编辑了类型库?是的,我编辑了类型库,但它会将过程abc添加到保护区域。所以我只是在发布区输入。如何编辑类型库以添加已发布的?我使用Delphi7。我确实从一些网站上读到说使用编辑->添加到界面。我将其与“程序abc1”一起使用。当我浏览源代码时,它被放在公共区域。当我使用treeview时,它也被放置在公共区域,但仍然是C#关于abc1的相同错误。谢谢你的回答。这也给了我一些观点。