2015-10-23 2 views
0

в C# я использую следующую функциюАльтернативный выбор одного элемента в нескольких раскрывающемся списке WebBrowser?

     foreach (HtmlElement item in webBrowser1.Document.GetElementsByTagName("option")) 
         { 
          if (item.InnerText == valano.Text) 
          { 
           item.SetAttribute("SELECTED", "SELECTED"); 
          } 
         } 

для выбора опции в следующем HTML

    <select id="Suco" name="Suco"><option /><option>14 
        </option><option>15 
        </option><option>16 
        </option><option>17 
        </option><option>18 
        </option><option>19 
        </option><option>20 
        </option><option>21 
        </option><option>22 
        </option><option>23 
        </option><option>24 
        </option><option>25 
        </option></select> 

как сделать функцию, чтобы работать в Дельфах?

var 
    ovElements: OleVariant; 
    i: Integer; 
begin 
    ovElements := WebTesta.OleObject.Document.forms.item(0).elements; 
    for i := 0 to (ovElements.Length - 1) do 
    if (ovElements.item(i).tagName = 'option') and 
     (ovElements.item(i).type = 'select') and 
    (ovElements.item(i).Value = 'Suco') then 
     ovElements.item(i).Click; 

не работает, почему?

+0

Добро пожаловать на переполнение стека. С какой частью задачи вы столкнулись? Покажите, какой код Delphi вы написали. –

+0

Ваш код Delphi даже не близок к тому, что делает код C#. –

ответ

0

Ваш код Delphi даже не близок к тому, что делает код C#.

Вот перевод C# код:

var 
    ovElements, ovItem: OleVariant; 
    i: Integer; 
begin 
    ovElements := WebTesta.OleObject.Document.GetElementsByTagName('option'); 
    for i := 0 to (ovElements.length - 1) do 
    begin 
    ovItem := ovElements.item(i); 
    if ovItem.InnerText = valano.Text then 
     item.SetAttribute('SELECTED', 'SELECTED'); 
    end; 
end; 

В качестве альтернативы, попробуйте следующее:

var 
    ovOptions, ovItem: OleVariant; 
    i: Integer; 
begin 
    ovOptions := WebTesta.OleObject.Document.getElementById('Suco').options; 
    for i := 0 to (ovOptions.Length - 1) do 
    begin 
    ovItem := ovOptions.item(i); 
    if ovItem.text = valano.Text then 
    begin 
     ovItem.selected := True; 
     Break; 
    end; 
    end; 
end; 

Или это:

var 
    ovSelect, ovOptions: OleVariant; 
    i: Integer; 
begin 
    ovSelect := WebTesta.OleObject.Document.getElementById('Suco'); 
    ovOptions := ovSelect.options; 
    for i := 0 to (ovOptions.Length - 1) do 
    begin 
    if ovOptions.item(i) = valano.Text then 
    begin 
     ovSelect.selectedIndex := i; 
     Break; 
    end; 
    end; 
end; 
Смежные вопросы