Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

заполнение контролов в IE по принципу twebbrowser. AV, помему? [D7, WinXP]


Vlad Oshin ©   (2007-03-20 15:28:00) 

IE6

Для управления twebbrowser писал:
var
 Coll : IHTMLElementCollection;
 Doc: IHTMLDocument2;
 i:integer;
begin
Doc:= IHTMLDocument2(form1.WebBrowser1.Document);
Coll:=IHTMLElementCollection(Doc.All.Tags('INPUT'));
for i:=0 to Coll.length-1 do begin //--------------- заполняем типа Input все
 if (HTMLInputElement(Coll.item(i,varEmpty)).name='FRM_VISA_SINGLE_FORM_N.DEFAULT.F_ NM_E.01')
  then begin HTMLInputElement(Coll.item(i,varEmpty)).value:=FirstName;  end;
...
или
 // выбор пола (по идеи - если есть муж, то женский)
 if (HTMLInputElement(Coll.item(i,varEmpty)).name='FRM_VISA_SINGLE_FORM_N.DEFAULT.SE X.01')
  then begin
  if HusbandName<>'' then begin
  HTMLInputElement(Coll.item(i,varEmpty)).outerHTML:='<SELECT size=1 name=FRM_VISA_SINGLE_FORM_N.DEFAULT.SEX.01>'+
    '<OPTION value=1 >Male<OPTION value=2 selected>Female</OPTION></SELECT>';


нормально было
решил для IE переделать:

var Winds: IShellWindows;
   IEWB: IWebBrowser2;
   Doc: IHtmlDocument2;
   i,j:integer;
   Coll : IHTMLElementCollection;
begin
Winds:=CoShellWindows.Create;
for i:=0 to Winds.Count-1 do
 if (Winds.Item(i) as IWEbBrowser2).Document<>nil
 then begin
   IEWB:=Winds.Item(i) as IWEbBrowser2;
   if IEWB.Document.QueryInterface(IhtmlDocument2, Doc)= S_OK
// ТУТ doc - такой же doc как в случае с webbrowser
// значит, работаем с ним также. или нет?

   then begin
     Coll:=IHTMLElementCollection(Doc.All.Tags('INPUT'));
     for j:=0 to Coll.length-1 do begin //--------------- AV при попытке определить Coll.length
       if (HTMLInputElement(Coll.item(j,varEmpty)).name='FRM_VISA_SINGLE_FORM_N.DEFAULT.F_ NM_E.01')
       then HTMLInputElement(Coll.item(j,varEmpty)).value:='aaa';
                                  end;
        end;
      end;


Vlad Oshin   (2007-03-20 16:22:00) [1]

спасибо, заработало!


Ш-К   (2007-03-20 15:57:00) [2]

Попробуй привести к IHTMLElementCollection через QueryInterface, а не простым кастом.


Vlad Oshin   (2007-03-20 15:53:00) [3]

нет


clickmaker   (2007-03-20 15:46:00) [4]

Coll = nil что-ли?


Наверх

Титульная страница Поиск, карта сайта Написать письмо