如何指定新tabsheet上的新WebBrowser |
答題得分者是:timhuang
|
wzpuma
一般會員 ![]() ![]() 發表:10 回覆:19 積分:5 註冊:2003-02-27 發送簡訊給我 |
我曾提了个问题,名为“pagecontrol上放了WebBrowser,点击链接后产生新的tabsheet ”,后经timhuang兄和wushang兄指点,问题解决了。原文见
"http://delphi.ktop.com.tw/topic.php?TOPIC_ID=26523"
假设我在pagecontrol控件上放了WebBrowser控件,点击链接后产生新的tabsheet,上面有新的WebBrowser(这些问题已解决),现随意点一新tabsheet(比如是tabsheet3,上面自然已有个新WebBrowser),希望取这个新WebBrowser的文档标题,协议,背景色等信息,
问题是该如何指定该新WebBrowser,我的代码如下:
procedure TForm1.showdoc(doc:IHtmlDocument2);
begin
Fdoc:=doc;
edit1.text:=fdoc.URL;
edit1.text:=fdoc.Protocol;
......
end;
procedure TForm1.ToolButton1Click(Sender: TObject);
var nowweb:TWebBrowser;//当前WebBrowser
Htmldoc: IHtmlDocument2;
nowtab : TTabSheet;//当前页
begin
nowtab:=pagecontrol1.ActivePage;
nowweb.ParentWindow := nowtab.Handle;
TOleControl(nowweb).Parent :=nowtab;
Htmldoc := nowweb.Document as IHtmlDocument2;
showdoc(doc);
end;
运行后却不对,该如何改?
另外上次的代码写的程序,上有些网站(如www.21cn.com 或www.sohu.com),弹出广告条有时只产生一个空白的TTabSheet,上面并无TWebBrowser,若取其上的文档标题,协议等信息,自然会出错,改如何加一if语句判断TTabShee上面有无TWebBrowsert,或干脆不产生空白的TTabSheet? 發表人 - wzpuma 於 2003/03/13 19:35:57
|
wushang
一般會員 ![]() ![]() 發表:2 回覆:13 積分:13 註冊:2003-02-10 發送簡訊給我 |
判斷當前TABSHEET上是否有WEBBROWSER﹐請參考﹕
procedure TForm1.PageControl1Change(Sender: TObject);
var
i : integer;
HaveWeb : boolean;//為true則指定TABSHEET上有WEBBROWSER
CurrentWeb : TWebBrowser;//指定TABSHEET上的WEBBROWSER
begin
HaveWeb := false;
if PageControl1.ActivePage.ControlCount=0 then
HaveWeb := false//當前TABSHEET上沒有任何控件
else
begin
for i := 0 to PageControl1.ActivePage.ControlCount-1 do
if PageControl1.ActivePage.Controls[i].ClassType = TWebBrowser then
begin
HaveWeb := true;//如果發現第I個控件是TWebBrowser﹐則說明找到
CurrentWeb := PageControl1.ActivePage.Controls[i];//也就是當前的TWebBrowser
break;//跳出循環
end;
if Haveweb then
Form1.caption := 'Have WebBrowser'
else
Form1.caption := 'NO';
end; 發表人 - wushang 於 2003/03/13 20:22:46 發表人 - wushang 於 2003/03/13 20:26:29
|
wushang
一般會員 ![]() ![]() 發表:2 回覆:13 積分:13 註冊:2003-02-10 發送簡訊給我 |
|
timhuang
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:78 回覆:1815 積分:1608 註冊:2002-07-15 發送簡訊給我 |
引言: procedure TForm1.ToolButton1Click(Sender: TObject); var nowweb:TWebBrowser;//当前WebBrowser Htmldoc: IHtmlDocument2; nowtab : TTabSheet;//当前页 begin nowtab:=pagecontrol1.ActivePage; nowweb.ParentWindow := nowtab.Handle; TOleControl(nowweb).Parent :=nowtab; Htmldoc := nowweb.Document as IHtmlDocument2; showdoc(doc); end;hi, 請修改為: procedure TForm1.Button3Click(Sender: TObject); var nowweb:TWebBrowser; Htmldoc: IHtmlDocument2; nowtab : TTabSheet; i: Integer; begin nowtab := PageControl1.ActivePage; for i := 0 to nowtab.ControlCount - 1 do begin if nowtab.Controls[i] is TWebBrowser then begin nowweb := nowtab.Controls[i] as TWebBrowser; break; end; end; if nowweb <> nil then begin Htmldoc := nowweb.Document as IHtmlDocument2; showdoc(Htmldoc); end; end;試試看!! |
timhuang
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:78 回覆:1815 積分:1608 註冊:2002-07-15 發送簡訊給我 |
引言: 順便問一下wzpuma兄﹐如何獲得當前WEBBROWSER的一些信息﹐例如其中的超聯接等﹖hi, 可以使用 IHtmlDocument2 中的 links, forms, images... 等來取得. 例如取得所有 links 如下: procedure TForm1.showlinks(doc: IHtmlDocument2); var ha : IHTMLAnchorElement; i : integer; begin for i := 0 to doc.links.length - 1 do begin ha := doc.links.item(i, 0) as IHTMLAnchorElement; showmessage(ha.href); end; end;其餘的可以自行嘗試看看.. |
wzpuma
一般會員 ![]() ![]() 發表:10 回覆:19 積分:5 註冊:2003-02-27 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |