procedure Browser2TreeView(WebBrowser: TWebBrowser; root:TTreeNodes);
var
i,j, k :Integer;
FormItem, Element, SubElement: OleVariant;
child, child2, child3 : TTreeNode;
s_type :
string;
begin
Assert(Assigned(WebBrowser));
Assert(Assigned(root));
root.Clear;
//count forms on document
for I:=0
to WebBrowser.OleObject.Document.forms.Length -1
do
begin
FormItem := WebBrowser.OleObject.Document.forms.Item(I);
if VariantIsObject(FormItem.
Name)
then
child := root.AddChild(
nil, '
Form'+IntToStr(i)+'
: '+FormItem.
Name.
Name)
else
child := root.AddChild(
nil, '
Form'+IntToStr(i)+'
: '+FormItem.
Name);
child.ImageIndex := 3;
For j:= 0
to FormItem.Length-1
do
begin
try
Element := FormItem.Item(j);
//when the fieldname is found, try to fill out
child2 := root.AddChild(child, Element.
Name+'
= '+Element.Value);
s_type := Element.
Type;
if s_type = '
submit'
then
child2.ImageIndex := 1
else if s_type = '
text'
then
child2.ImageIndex := 0
else if s_type = '
file'
then
child2.ImageIndex := 2
else if s_type = '
hidden'
then
child2.ImageIndex := 4
else if s_type = '
checkbox'
then
child2.ImageIndex := 5
else if s_type = '
radio'
then
child2.ImageIndex := 6
else if s_type = '
select-one'
then
child2.ImageIndex := 7
else
child2.ImageIndex := -1;
child3 := root.AddChild(child2, '
Type='+s_type);
child3.ImageIndex := -1;
if s_type = '
text'
then
begin
child3 := root.AddChild(child2, '
MaxLen='+IntToStr(Element.maxLength));
child3.ImageIndex := -1;
end
else if s_type = '
select-one'
then
begin
for k := 0
to Element.Options.Length-1
do
begin
SubElement := Element.Options.Item(k);
child3 := root.AddChild(child2, SubElement.Text+ '
= <'+SubElement.Value+'
>');
child3.ImageIndex := -1;
end;
// ShowMessage(IntToStr(Element.Options.Length));
end;
except
on E:
Exception do
root.AddChild(child, E.
Message);
end;
end;
end;
if root.Count > 0
then
root.GetFirstNode.Expand(True);
end;
// Aufruf
Browser2TreeView(WebBrowser1, TreeView1.Items);