新手。。问个问题
程序里有两个webbrowser,分别为webbrowser1和webbrowser2
然后我想做的是先利用webbrowser1载入一个页面,然后得到webbrowser1里面的几条记录。然后通过这记录里的一个数据生成webbrowser2的页面地址,载入webbrowser2.并得到一些数据。
现在有个问题,就是我从webbrowser1里得到10条记录。我想每得到一条记录的时候生成一个网址然后让webbrowser2载入。然后判断webbrowser2得到的数据是否是需要的数据,如果是的话webbrowser1在后面几条记录操作时就不再去生成网址去操作webbrowser2了。如果生成的不是。那么下一条记录就要再生成地址去操作但是因为webbrowser2载入页面需要一定时间。。所以我把事件放到一个timer里面。然后在载入webbrowser2时打开timer,让他判断webbrowser2.busy=false来确定是否webbrowser2载入完成。然后进行操作。可是问题出现了。。webbrowser1的循环的时候根本不去等待timer的执行就全执行完了。。如果我在webbrowser1里面加一个while webbrowser2.busy do;的话。发现timer不动了。整个程序就一直在等这个while语句。。我觉得可能是方法不对。大家教下有什么好的办法
程序里有两个webbrowser,分别为webbrowser1和webbrowser2
然后我想做的是先利用webbrowser1载入一个页面,然后得到webbrowser1里面的几条记录。然后通过这记录里的一个数据生成webbrowser2的页面地址,载入webbrowser2.并得到一些数据。
现在有个问题,就是我从webbrowser1里得到10条记录。我想每得到一条记录的时候生成一个网址然后让webbrowser2载入。然后判断webbrowser2得到的数据是否是需要的数据,如果是的话webbrowser1在后面几条记录操作时就不再去生成网址去操作webbrowser2了。如果生成的不是。那么下一条记录就要再生成地址去操作但是因为webbrowser2载入页面需要一定时间。。所以我把事件放到一个timer里面。然后在载入webbrowser2时打开timer,让他判断webbrowser2.busy=false来确定是否webbrowser2载入完成。然后进行操作。可是问题出现了。。webbrowser1的循环的时候根本不去等待timer的执行就全执行完了。。如果我在webbrowser1里面加一个while webbrowser2.busy do;的话。发现timer不动了。整个程序就一直在等这个while语句。。我觉得可能是方法不对。大家教下有什么好的办法
解决方案 »
- 窗体创建和释放问题,动态ADOQuery字段问题
- 问题教急!!在线等!!字体问题
- delphi中如何杀死进程?
- batchmove的两个问题
- 如何判断combobox中的text是否在列表中,列表中的先选项数不确定
- 谁有3-DES加密算法的Delphi源码?
- 什么叫RPC服务器不可用?
- 请问treeview控件的节点上有没有MOUSE双击事件?如果有的话是那一个?
- 如何在窗体透明的情况下,使label等控件也能透明?
- 我原来用Delphi做数据库,现在改用VC++6 && SQL 了,感觉很好,没什么麻烦的,比Delphi好多了,大家快改用VC做数据库吧?
- ▲如何取得其他用户安装的BCB“第三方控件”
- TcxGrid主从表添加记录时出错, 大家来帮忙
procedure TForm1.Button1Click(Sender: TObject);
var
Doc:IHTMLDocument2;
elements: IHTMLElementCollection;
len:integer;
i,j,h:integer;
tbl:OleVariant;
str:array of array of string;
Url,tmp:string;
flag:integer;
begin
//得到DOC和表格对像
Doc:=webbrowser1.document as IHTMLDocument2;
elements:=Doc.all;
//htmlTable:=doc.getElementsByTagName('table');
tbl:=elements.tags('table');
//从第二个表格起开始查。也就是有查到数据的情况下再执行操作了
tmp:='"';
flag:=0;
timer1.Enabled:=false;
timer2.Enabled:=false;
for i:=1 to tbl.length-1 do
begin
len:=tbl.item(i).rows.length-1;
//动态生成数组第一维
SetLength(str,len);
for j:=low(str) to high(str) do
begin
//动态生成数组第二维
SetLength(str[j],10);
//从第二行开始起查找
for h:=0 to tbl.item(i).rows.item(j+1).cells.length -1 do
begin
str[j,h]:= tbl.item(i).rows.item(j+1).cells.item(h).innerText;
//showmessage(str[j,h]);
if (h=2)and(flag=0) then
begin
Url:= tbl.item(i).rows.item(j+1).cells.item(h).innerHTML;
//Url:=MidStr('asdf',1,3);
Url:=MidStr(Url,pos('"',Url)+1,length(Url));
Url:=MidStr(Url,1,pos('"',Url)-1);
//ShowMessage(Url);
//ShowMessage(Url);
Webbrowser2.Navigate('file://e:/car/new0907/'+Url);
flag:=1;
timer1.Enabled:=true; end;
end;
end; end;
end;
我刚找了一下。用Application.ProcessMessages可以搞定。只是方法不太好。。
建议用idhttp,效果好还稳定。