如何使用 ActiveX 参数将项目添加到列表框中?

How to add items into Listbox using ActiveX params?

我是 ActiveX 新手。我正在尝试使用 HTML 参数将一些项目添加到列表框中:

<object classid="clsid:B8F86405-G7YB-4BDF-AD70-55B265068G44" codebase="project.ocx" width="600" height="500">

  <param name="item" value="item1">
  <param name="item1 id " value="1">
</object>

我还不知道如何在 Delphi 中读取那些 HTML 值。我想我必须使用一些 getter/setter,但我不知道从哪里开始。

HTML <object> 元素根据需要使用 IPersistPropertyBag and IPropertyBag interfaces. The HTML host (such as a web browser) creates the specified object, and if successful then queries it for IPersistPropertyBag, and if successful then calls Load() passing it an IPropertyBag object that the object can Read() 值将参数值加载到 ActiveX 对象中。

在Delphi中,你不需要求助于那个级别。您可以直接设置属性:

uses
  ..., ComObj;

var
  Obj: Variant;
begin
  // if you have a ProgID name, use CreateOleObject() instead...
  //Obj := CreateOleObject('progid');
  Obj := CreateComObject(StringToGUID('{B8F86405-G7YB-4BDF-AD70-55B265068G44}'));
  Obj.item := 'item1';
  Obj.item1 := '1';
end;

当然,如果属性不是字符串,则使用适当的类型。例如,如果 item1 是一个整数:

Obj.item1 := 1;