...Get Listbox Items from a TWebBrowser Document?
Author: Greg
//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;
printed from
www.swissdelphicenter.ch
developers knowledge base