DELPHI + TWEbbrowser - 将Option(s)和VALUE附加到现有SELECT中

时间:2017-09-13 08:45:16

标签: delphi

在网页上我有一个空的选择框:

<select id="select" >
</select>

从我的Delphi(7 enterprise / XP - sp(3))我想将N OPTION(s)和VALUE(s)放入该选择中。

从服务器获取N,可以是1到150之间的任何数字:

类似的东西:

只有在运行时我才能知道N的精确值(可能会从运行变为运行 - 这里n = 5):

DELPHI:

For N := 0 to 5 DO
   PutIntoSelect('option' + inttostr(n), 'value' + inttostr(n));

所以结果将是:

HTML:

    <select id="select" >
    <option = '0'>value0</option>
    <option = '1'>value1</option>
    <option = '2'>value2</option>
    <option = '3'>value3</option>
    <option = '4'>value4</option>
    <option = '5'>value5</option>
    </select>

我该怎么做?

我研究过IHTMLSELECTelement但我找不到有用的东西。

1 个答案:

答案 0 :(得分:1)

非常简单。您只需获得一个选项元素工厂并调用create来实例化一个新选项。然后,您可以通过select元素的add方法添加返回的选项。

此代码显示了如何,但不安全!您应该将其分解成碎片,并且每当您要求参考时,检查是否已分配询问的那个,因此将以下作为原则示例

procedure TForm1.Button1Click(Sender: TObject);
var
  Option: IHTMLOptionElement;
  Select: IHTMLSelectElement;
  Factory: IHTMLOptionElementFactory;
begin
  Select := (WebBrowser1.Document as IHTMLDocument3).getElementById('select') as IHTMLSelectElement;
  Factory := (WebBrowser1.Document as IHTMLDocument2).parentWindow.Option;

  Option := Factory.create('Option 1', 'Value 1', False, True);
  Select.add(IHTMLElement(Option), Unassigned);
  Option := Factory.create('Option 2', 'Value 2', False, False);
  Select.add(IHTMLElement(Option), Unassigned);
end;

您可以使用的HTML:

<!DOCTYPE html>
<html>
<body>
  <select id="select"/>
</body>
</html>