2015-03-07 2 views
-1

Я новичок в ActiveX. Я пытаюсь добавить некоторые элементы в Listbox с использованием HTML Params:Как добавить элементы в список с помощью параметров ActiveX?

<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. Я думаю, что мне нужно использовать какой-то приемник/сеттер, но я не знаю, с чего начать.

+0

Готовы ли вы, чтобы ваши html-страницы были ограничены IE? Вы действительно нуждаетесь в ActiveX на веб-странице? V –

+0

Почему я ограничен, то есть только, я знаю, что активный x не будет работать в других браузерах Netscape, но всегда есть способ сделать плагин netscape для моего activex – DelphiStudent

+1

Мы поняли около 15 лет назад, возможно, больше, что ActiveX не было места в браузере. Наверное, вы не видели записку. ;-) Используйте современный подход, основанный на стандартах, независимо от вашей проблемы. –

ответ

0

Элемент HTML <object> загружает значения параметров в объект ActiveX с использованием интерфейсов IPersistPropertyBag и IPropertyBag. Хост HTML (например, веб-браузер) создает указанный объект и в случае успеха затем запрашивает его для IPersistPropertyBag, и в случае успеха он вызывает Load(), передавая ему объект IPropertyBag, который может иметь значение Read() объекта.

В 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;