... get select list selection from TWebBrowser?
Author: Greg
//Add MSHTML to your USES clause
//Add a TWebBrowser
//Add 2 buttons
//Add an editbox
//////////////////////////////////////////////////////////////////////
function IsSelectElement(eleElement: IHTMLElement): Boolean;
var
selElement: IHTMLSelectElement;
begin
Result := False;
try
selElement := eleElement as IHTMLSelectElement;
except
Exit;
end;
Result := True;
end;
//////////////////////////////////////////////////////////////////////
function GetListBoxOption(Web1: TWebBrowser;
strListBoxName: string;
intInstance: Integer): string;
var
eleChild: IHTMLElement;
eleElement: IHTMLElement;
colGrandParents: IHTMLElementCollection;
colParents: IHTMLElementCollection;
selElement: IHTMLSelectElement;
intCount: Integer;
intG: Integer;
intGMax: Integer;
intSelected: Integer;
Document: IHTMLDocument2;
begin
Result := '';
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;
eleChild := colParents.Item(intSelected, '') as IHTMLElement;
Result := eleChild.InnerText;
end;
end;
end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
WebBrowser1.Navigate('http://www.swissdelphicenter.ch/torry');
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Edit1.Text := GetListBoxOption(WebBrowser1, 'select', 0);
end;
printed from
www.swissdelphicenter.ch
developers knowledge base