2017-09-13 45 views
2

在网页中我有一个空的选择框:DELPHI + TWEbbrowser - 附加选件(S)和值(S)为现有的SELECT

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

从我的德尔福(7企业/ XP - SP(3 ))我想将N OPTION(s)和VALUE(s)放入该选择中。

N是从服务器获取的,并且可以是任何数量的1和150之间:

是这样的:

只有在运行时,我会知道的N(这可能会从运行切换到精确valyue运行 - 在这里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

这很简单。您只需获得选件元素工厂,然后致电create实例化新选项。返回的选项然后通过选择元素的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> 
+0

无论如何,组合框中的150个项目几乎是雇用一名秘书:) – Victoria

+0

感谢您的代码。我会尝试它并(有意)修改它 - 如有必要。 _约150件物品:(赫赫)是的,但幸运的是,秘书大部分时间都是下班,因为选择只会在非常罕见的情况下包含150件物品(大部分为10至50件)..再次感谢代码。 –

+0

然后它需要一个更多的组合与固定数量的项目,让他们忙碌:)我已经在东京进行了测试。 – Victoria

相关问题