delphi控制网页下拉框,出现不知名的问题!急需援助! 本帖最后由 u010632220 于 2013-05-09 15:08:59 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 比如这个网页http://www.discuz.net/forum.php?mod=post&action=newthread&fid=22&referer=http%3A//www.discuz.net/forum-22-1.html 这个网页的下拉框,用delphi代码没法控制它选哪一项。读取好像行,但是修改它不行。比较奇怪。 我说,这个“选择分类主题”下就两项,一个option“选择新主题”,一个“新建议”。就2项,index就0和1两个,哪来的2嘛 // 下拉列表选择0和1都问题嘛,你说选2会出问题?压根没有2个这index嘛procedure TForm1.wb1DocumentComplete(Sender: TObject; const pDisp: IDispatch; var URL: OleVariant);var doc: IHTMLDocument2; select: IHTMLSelectElement;begin doc := wb1.Document as IHTMLDocument2; select := doc.all.item('typeid', 0) as IHTMLSelectElement; select.selectedIndex := 1;end; 兄弟,你的代码好像放到按钮里面就不起作用了。这个是什么原因呢?比如procedure TfrmMain.btnLoadClick(Sender: TObject);放在这里面就没选中下拉框第二项。你的代码放在wb1DocumentComplete事件里面,确实起作用。不过即使这样,也基本能解决我现在的问题了。 DocumentComplete事件是当网页内容(包含js)都下载完毕到本地后做的事情。如果网页没下载完成,你就btnLoadClick干别的事就可能无效,例如网页的某个标签没下砸完成,某段JS脚本没下载完成,而很多DOM事件需要JS去控制,这时就无效。你也可以这样var flg:boolean;procedure TForm1.wb1DocumentComplete(Sender: TObject; const pDisp: IDispatch; var URL: OleVariant);begin flg := true;end;// 然后procedure TfrmMain.btnLoadClick(Sender: TObject);begin if flg then // 页面加载完毕后 ..... // 前提都是必须网页加载完毕end; 窗体间的控件控制? 在用edit或maskedit时,输入数据后回车,如何消出回车键盘按下出现的提示声音? 难!检测进程是否死锁。UP有分。 [求助]如何取得ADO的出错信息? 用Rave打印,如何不预览,直接就打印? 为什么DELPHI6报表头中的Tqrlabel1显示不出来? 简单问题,高手快点来拿分哦!!!!!!!!!!!!!!!!!!!!!! 用弹出窗口方式还是用建立子窗口方法实现查询对话框? 怎样恢复备份的数据库? 为什么每人回答我的问题:如何在DBgrid里对某一行设置颜色?? 句柄 ? webbrowser只显示div里面内容
http://www.discuz.net/forum.php?mod=post&action=newthread&fid=22&referer=http%3A//www.discuz.net/forum-22-1.html
就2项,index就0和1两个,哪来的2嘛
// 下拉列表选择0和1都问题嘛,你说选2会出问题?压根没有2个这index嘛
procedure TForm1.wb1DocumentComplete(Sender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
var
doc: IHTMLDocument2;
select: IHTMLSelectElement;
begin
doc := wb1.Document as IHTMLDocument2;
select := doc.all.item('typeid', 0) as IHTMLSelectElement;
select.selectedIndex := 1;
end;
比如procedure TfrmMain.btnLoadClick(Sender: TObject);
放在这里面就没选中下拉框第二项。你的代码放在wb1DocumentComplete事件里面,确实起作用。不过即使这样,也基本能解决我现在的问题了。
如果网页没下载完成,你就btnLoadClick干别的事就可能无效,例如网页的某个标签没下砸完成,某段JS脚本没下载完成,而很多DOM事件需要JS去控制,这时就无效。你也可以这样
var
flg:boolean;procedure TForm1.wb1DocumentComplete(Sender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
begin
flg := true;
end;// 然后
procedure TfrmMain.btnLoadClick(Sender: TObject);
begin
if flg then // 页面加载完毕后
..... // 前提都是必须网页加载完毕
end;