Как я уже написал с Комбобоксом я пока не разобрался, но так как с такой проблемой сталкнулся не я один приведу пример моего решения для эдитов и кнопки. На форме лежат Memo1, Edit1,Edit2,Edit3,WebBrowser1,SpeedButton1,SpeedButton2,SpeedButton3
| Код | //основная процедура обработи фреймов procedure TForm1.Frame(Doc:IHTMLDocument2;Add:Boolean;IName:String;Comm:String); var frames:IHTMLFramesCollection2; i,y:integer; Disp:IDispatch; Element:IHTMLElement; InputElement:IHTMLInputElement; ov:OleVariant; Window2:IHTMLWindow2; begin for i:=1 to Doc.all.length do begin Disp:=Doc.all.item(Pred(i),0); Disp.QueryInterface(IHTMLElement,Element); if Assigned(Element) then begin Element.QueryInterface(IHTMLInputElement,InputElement); if Assigned(InputElement) then begin if Add=False then Memo1.Lines.Add('NAME= '+InputElement.Name) else if InputElement.name=IName then begin if Comm<>'ClickBt' then InputElement.value:=Comm else begin Element.click; end; end; end; end; end; frames:=Doc.frames; if Assigned(frames) then begin for y:=1 to frames.length do begin ov:=y-1; Disp:=frames.item(ov); Disp.QueryInterface(IHTMLWindow2,Window2); Frame(Window2.document,Add,IName,Comm); end; end; end;
// Открываем страничку в браузере берём адрес из эдита procedure TForm1.SpeedButton1Click(Sender: TObject); begin Memo1.Lines.Clear; WebBrowser1.Navigate(Edit3.Text); end;
// Запускаем просмотр компонентов ввода procedure TForm1.SpeedButton2Click(Sender: TObject); var Doc:IHTMLDocument2; begin Memo1.Lines.Clear; if not Assigned(WebBrowser1.ControlInterface.Document) then Memo1.Lines.Add('Фрейм Верхнего уровня ненайден!') else begin WebBrowser1.ControlInterface.Document.QueryInterface(IHtmlDocument2,Doc); Frame(Doc,False,'',''); end;
// Вводим значение из edit2.Text в компонент с именем edit1.Text procedure TForm1.SpeedButton3Click(Sender: TObject); var Doc:IHTMLDocument2; begin Memo1.Lines.Clear; if Assigned(WebBrowser1.ControlInterface.Document) then begin WebBrowser1.ControlInterface.Document.QueryInterface(IHtmlDocument2,Doc); Frame(Doc,True,Edit1.Text,Edit2.Text); end; end;
|
|