Mega Code Archive

 
Categories / Delphi / LAN Web TCP
 

Get listbox items from a twebbrowser document

//Add MSHTML to your uses clause //Add a TWebBrowser //Add two buttons //Add a ComboBox ////////////////////////////////////////////////////////////////////////////// function IsSelectElement(eleElement: IHTMLElement): Boolean; ////////////////////////////////////////////////////////////////////////////// var selElement: IHTMLSelectElement; begin Result := False; try selElement := eleElement as IHTMLSelectElement; except Exit; end; Result := True; end; /////////////////////////////////////////////////////////////////////////////// procedure GetListBoxOptions(Web1: TWebBrowser; strListBoxName: string; intInstance: Integer; tslLines: TStrings; out intSelected: Integer); /////////////////////////////////////////////////////////////////////////////// var eleChild: IHTMLElement; eleElement: IHTMLElement; colGrandParents: IHTMLElementCollection; colParents: IHTMLElementCollection; selElement: IHTMLSelectElement; intCount: Integer; intG: Integer; intGMax: Integer; intP: Integer; intPMax: Integer; Document: IHTMLDocument2; begin tslLines.Clear; intSelected := -1; intCount := -1; //Magic declarations Document := Web1.Document as IHTMLDocument2; if Document = nil then Exit; colGrandParents := Document.All; if colGrandParents = nil then Exit; intGMax := colGrandParents.Length - 1; for intG := 0 to intGMax do begin eleElement := colGrandParents.Item(intG, '') as IHTMLElement; if IsSelectElement(eleElement) then begin selElement := eleElement as IHTMLSelectElement; if selElement.Name = strListBoxName then begin //Found a list box with the correct name. Inc(intCount); if intCount = intInstance then begin //Found the instance with the correct name. intSelected := selElement.selectedIndex; colParents := eleElement.children as IHTMLElementCollection; intPMax := colParents.Length - 1; for intP := 0 to intPMax do begin eleChild := colParents.Item(intP, '') as IHTMLElement; tslLines.Add(eleChild.InnerText); end; end; end; end; end; end; procedure TForm1.Button1Click(Sender: TObject); begin WebBrowser1.Navigate('http://www.swissdelphicenter.ch/torry'); end; procedure TForm1.Button2Click(Sender: TObject); var intSelected: Integer; begin ComboBox1.Text := ''; GetListBoxOptions(WebBrowser1, 'select', 0, ComboBox1.Items, intSelected); if intSelected > -1 then begin ComboBox1.Text := ComboBox1.Items[intSelected]; end; end;