Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.02.2011, 10:34   #1
92avenu
Пользователь
 
Регистрация: 15.03.2010
Сообщений: 18
Вопрос как внести значение в SELECT в TWebBrowser, SetFieldValue не работвает

Вот кусочек html кода:
Код HTML:
<select name='auto_watch' class='field select_auto_watch ' id='auto_watch' style='width: 180px;'><option value='1'>10 мин</option><option value='2'>20 мин</option><option value='3'>30 мин</option>   ...   <option value='11'>110 мин</option><option value='12'>120 мин</option></select>
Вот функция которой пытаюсь редактировать поле СЕЛЕКТ:
Код:
procedure SetFieldValue(theForm: IHTMLFormElement;
const fieldName, newValue: string; const instance: integer);
var
   field: IHTMLElement;
   inputField: IHTMLInputElement;
   selectField: IHTMLSelectElement;
   textField: IHTMLTextAreaElement;
begin
   field := theForm.Item(fieldName,instance) as IHTMLElement;
   if Assigned(field) then
   begin
     if field.tagName = ‘INPUT’ then
     begin
       inputField := field as IHTMLInputElement;
       if (inputField.type_ ‘radio’) and (inputField.type_ ‘checkbox’)
       then inputField.value := newValue
       else inputField.checked := (newValue = ‘checked’);
     end
     else if field.tagName = ‘SELECT’ then
     begin
       selectField := field as IHTMLSelectElement;
       selectField.value := newValue;
     end
     else if field.tagName = ‘TEXTAREA’ then
     begin
       textField := field as IHTMLTextAreaElement;
       textField.value := newValue;
     end;
   end;
end;
Вот так я её вызываю:
Код:
theForm := GetFormByNumber(BrowserMain.Documen t as IHTMLDocument2,0);
SetFieldValue(theForm,'auto_watch','5');
И ничего не происходит... А по идее должно выбраться пятое значение ('50 мин').
Что делать как быть? Есть ли альтернативный способ? Отсылка методом ПОСТ не интересует.

Заранее спасибо)

P.S. Все поиски переюзал
92avenu вне форума Ответить с цитированием
Старый 02.02.2011, 10:42   #2
mss
Заблокирован
 
Регистрация: 27.05.2010
Сообщений: 1,099
По умолчанию

> И ничего не происходит

Ну да. И отладчик тоже молчит как партизан на допросе в гестапо.
mss вне форума Ответить с цитированием
Старый 02.02.2011, 11:04   #3
92avenu
Пользователь
 
Регистрация: 15.03.2010
Сообщений: 18
По умолчанию

Перед тем как создать топик я долго ломал голову, ну ничего не вышло, так бы я и не обратился)

Тем более мне могло просто силенок не хватить разобраться "Новички в программировании"
92avenu вне форума Ответить с цитированием
Старый 02.02.2011, 12:09   #4
BeerDrinker
Пользователь
 
Аватар для BeerDrinker
 
Регистрация: 30.01.2011
Сообщений: 16
По умолчанию

когда то писал такой код - в цикле искались селекты и ставились им значения, тут принцип следующий селект не нужно "редактировать" есть специальный параметр selectedindex значение которого и есть номер выбранного элемента (если правильно помню отсчет начинается с нуля), присваиваете ему нужную цифру и все - значение установлено
Код:
var
  FormItem: Variant;
//--------
if FormItem.item(j).Name = 'auto_watch' then
            FormItem.item(j).selectedindex := 4;
для вашего примера думаю будет верно записать так, хотя детально не вчитывался - проверяйте.
Код:
if field.tagName = ‘SELECT’ then
     begin
       selectField := field as IHTMLSelectElement;

       {selectField.value := newValue;}
       selectField.selectedindex := 4;
     end

Последний раз редактировалось BeerDrinker; 02.02.2011 в 12:15.
BeerDrinker вне форума Ответить с цитированием
Старый 02.02.2011, 20:24   #5
92avenu
Пользователь
 
Регистрация: 15.03.2010
Сообщений: 18
По умолчанию

Благодарю всех!)
Вот функция которая меняет почти во всех компонентах (форма для ввода текста, селекты) значение на нужное занчение:

Код:
function FillForm(WebBrowser1:TWebBrowser; FieldName: string; Value: string): Boolean;
  var
    i, j,k: Integer;
    FormItem: Variant;
  begin
    Result := False;

  for I := 0 to WebBrowser1.OleObject.Document.forms.Length - 1 do
    begin

      FormItem := WebBrowser1.OleObject.Document.forms.Item(I);
      for j := 0 to FormItem.Length - 1 do
      begin
        try
        if FormItem.Item(j).Name = FieldName then
          begin
            FormItem.Item(j).Value := Value;
            Result := True;
          end;
        except
          Exit;
        end;
      end;
    end;
  end;
Вот. BeerDrinker, отдельное спасибо, начал читать ваш пост, и вспомнил что у меня была подобная процедура уже, я просто как-то не подумал что она к селектам применима)
92avenu вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В зависимости от выбора в Select изменить значения другого Select Tayfun HTML и CSS 3 18.08.2011 00:05
Внести уникальное значение в Комбобокс. KOSTIK1 Microsoft Office Excel 4 23.03.2010 10:53
С++. Что и как можно внести в DLL и как потом с этим работать? dampirik Помощь студентам 5 21.09.2009 08:19
Как прочитать значение переменной javascript в TWebBrowser? u961 Работа с сетью в Delphi 2 01.04.2009 23:22
как из select возвратить выбранное значение? micaell PHP 3 05.01.2007 23:05