Конференция "Corba" » Изменить значение checkbox в WebBrowser [Delphi, Windows]
 
  • zamanula (18.05.09 20:27) [0]
    Добрый день.
    Такая проблема. В программе есть часть, которая через встроенный браузер (TWebBrowser) заполнят два поля формы 'логин' и 'пароль'. Всё посредством COM. С этим проблем нет. Делаю перебор по странице на наличие форм, потом перебор по форме на наличие компонентов и заполняю. Всё отлично.
    Но никак не могу сделать так, чтобы выставить галочку в checkbox'e 'Запомнить меня' :(

    Как это можно сделать? Буду признателей за помощь кодом ;)
  • Сергей М. © (18.05.09 23:12) [1]
    500 WMR
  • Wadim005 (19.05.09 11:50) [2]
    Только позавчера это решил, дело в том, что у него может быть значение value а может и не быть, если его нет, то по умолчанию возвращает on

    но это value как и в checkbox так и в radio понятие относительно, там главное атрибут checked

    Вот рабочий пример, правда не для TWebBrowser а для IWebBrowser2
    если ты для обычных type=text сделал для TWebBrowser то этот код переделаешь


    procedure Tform1.SetDataValue(WB:IWebBrowser2; NameTag, SetValue:String);
    var
     iDoc: IHtmlDocument2;
     i: integer;
     ov: OleVariant;
     iDisp: IDispatch;
     iColl: IHTMLElementCollection;
     iInputElement: IHTMLInputElement;
    begin //

     iDoc := (WB as IWebBrowser).Document as IHtmlDocument2;
     if not assigned(iDoc) then
     begin
      // ShowMessage(' !!!??? Nothing dowloaded ... ');
      // Exit;
     end;
     ov := 'INPUT';
     IDisp := iDoc.all.tags(ov);
     if assigned(IDisp) then
     begin
       IDisp.QueryInterface(IHTMLElementCollection, iColl);
       if assigned(iColl) then
       begin
         for i := 1 to iColl.Get_length do
         begin
           iDisp := iColl.item(pred(i), 0);
           iDisp.QueryInterface(IHTMLInputElement, iInputElement);
           if assigned(iInputElement) then
           begin
    //=======ВОТ ЭТО ТО ЧТО ТЕБЕ НУЖНО!
    //===НО ЭТО ЕЩЕ И ДЛЯ TYPE=RADIO, ТЕБЕ ТУТ НУЖНО ТОЛЬКО
    //===УБРАТЬ ПРОВЕРКУ if (iInputElement.value=SetValue)

             if iInputElement.Get_name = NameTag then begin   //===ЭТО НАШ RADIO, ЕГО NAME    
           if (iInputElement.value=SetValue) then begin
               iInputElement.Set_value(SetValue);   //====МОЖЕТ И НЕ ОБЯЗАТЕЛЬНО, НЕ ПРОВЕРЯЛ
               iInputElement.checked:=true;   //====А ЭТО ЧЕКНЕТ ИМЕННО НУЖНЫЙ НАМ ЭЛЕМЕНТ
               break;
               end;
               end;
           end;
         end;
       end;
       end;
    end;

  • RODELIM (24.09.09 20:14) [3]
    Здравствуйте zamanula!
    Вы не могли бы прислать ту часть Вашего кода, которая опрашивает сначало формы, потом компаненты. Тоже столкнулся с проблемой заполнения Логина и Пароля! Спасибо!
  • Айнур (03.02.10 18:55) [4]
    checked:=true;


    вот это очень помогло =) спасибо =) минут 30 голову ломал =)
 
Конференция "Corba" » Изменить значение checkbox в WebBrowser [Delphi, Windows]
Есть новые Нет новых   [134427   +35][b:0][p:0.002]