神呀,救救我吧!(不过我想应该是个挺简单的问题)(50分)

  • 主题发起人 主题发起人 chenboby
  • 开始时间 开始时间
C

chenboby

Unregistered / Unconfirmed
GUEST, unregistred user!
请教一下,为什么我编译下面代码的时候出现:
[Error] webbrowserpost.pas(56): Object or class type required
错误
出错行是:
o := WebBrowser.oleobject.document.documentelement.document.frames.item(FrameIndex).document.all.item('LoginUserID',0);
我已经user了MSHTML,还需要什么吗,有没有谁做过这个,给个具体的例子好吗?
程序为:
1.htm里有个表单,里面有TEXT框,名字是test
*******************************************************************************
利用Delphi的Olevariant类型

单个frames的输入

var
o : Olevariant;
begin
o := WebBrowser.OleObject.document.all.item('LoginUserID',0); //找到登录用户名的输入框
o.value := 'TEST';
o := WebBrowser.oleobject.document.all.item('LoginPassword',0); //找到登录密码的输入框
o.value := 'TEST'
WebBrowser.oleobject.document.Forms.Item(0, 0).submit; //第一个表单提交

{

o :=WebBrowser.oleobject.document.all.item('Login',0); //或者用指定表单名称提交
o.Click; //点击操作,对其它对象也可同样操作
}
end;


 

多个frames的输入,FrameIndex为Frame的序号

 

var
o : Olevariant;
begin

//找到登录用户名的输入框
o := WebBrowser.oleobject.document.documentelement.document.frames.item(FrameIndex).document.all.item('LoginUserID',0);
o.value := 'TEST';

//找到登录密码的输入框
o := WebBrowser.oleobject.document.documentelement.document.frames.item(FramIndex).document.all.item('LoginPassword',0);
o.value := 'TEST'

//第一个表单提交
WebBrowser.oleobject.document.documentelement.document.frames.item(FramIndex).document.Forms.Item(0, 0).submit;

{

//或者用指定表单名称提交

o :=WebBrowser.oleobject.document.documentelement.document.frames.item(FramIndex)..document.all.item('Login',0);
o.Click; //点击操作,对其它对象也可同样操作
}
end;

 
顺便问一下,如果用下面这段程序访问多Frame的页面怎么办?
 
程序如下:
procedure TForm1.WebBrowserEx1BeforeNavigate2(Sender: TObject;
const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
Headers: OleVariant; var Cancel: WordBool);
var
doc:IHTMLDocument2;
all:IHTMLElementCollection;
len,i:integer;
item:OleVariant;
HtmlInputEle : IHTMLInputElement;
HoptionBtn: IHTMLselectElement;
spDisp : IDispatch;
ss:Tstrings;
begin
if url='' then
exit;
if (Uppercase(URL) = UPPercase(ladd)) and (WebBrowserEx1.Document <> nil) then
begin
doc:=WebBrowserEx1.Document as IHTMLDocument2;
all:=doc.all;
len:=all.Length;
for i:=0 to len-1 do
begin
spDisp:=all.item(i,varEmpty);
if SUCCEEDED(spDisp.QueryInterface(IHTMLInputElement ,HtmlInputEle)) then
begin
listbox1.Items.Add(HTmlInputEle.name);
if HTMlInputEle.name = 'checkbox' then
begin
if HtmlInputEle.checked then
listBox1.Items.add(HtmlInputEle.value);
end
else
begin
if HTMlInputEle.name = 'radiobutton' then
begin
if HtmlInputEle.checked then
listbox1.items.add(HtmlInputEle.Get_value);
end
else
listBox1.Items.add(HtmlInputEle.value);
end;
end;
if SUCCEEDED(spDisp.QueryInterface(IHTMLselectElement ,HOptionBtn)) then
begin
if assigned(HoptionBtn) then listBox1.Items.add(HoptionBtn.name);
if assigned(HoptionBtn) then listBox1.items.add(HoptionBtn.Get_value);
listbox1.Items.add((HoptionBtn.options as IHTMLSelectELement).value);
end;
end;
end;
end;
 
检查一下你的O的值
 
能不能说得详细些,我有点不解
 
还有没有人呀
 
问题已经解决了,谢谢
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
622
import
I
后退
顶部