Ⅰ Delphi的WebBrowser控制項在哪
在Internet選項卡下,如果沒有就安裝下dclsockets70.bpl
Ⅱ Delphi中的WebBrowser控制項
拖一個webbrowser進來,如WebBrowser1
uses MSHTML,ActiveX,OleCtrls, SHDocVw;
定義這個函數。
procere SetHtml2009(const WebBrowser: TWebBrowser; const Html: string);
var
htmDoc:IHTMLDocument2;
v:oleVariant;
begin
if not Assigned(WebBrowser.Document) then Exit;
try
htmDoc:=WebBrowser.Document as IHtmlDocument2;
v := VarArrayCreate([0,0], varVariant);
v[0]:=Html;
htmDoc.Write(PSafeArray(TVarData(v).VArray));
htmDoc.Close;
except
end;
end;
formCreate時,初始化webbrowser。代碼如下:
var
v:oleVariant;
begin
v:='about:blank'; //初始化 WebBrowser1
WebBrowser1.Navigate2(v);
end;
在initialization和finalization部分處理OLE初始化
initialization
OleInitialize(nil);
finalization
try
OleUninitialize;
except
end;
在用到webbrowser的地方,定義一個字元串,如str:string;
這里存放你的HTML代碼,比如
str:='<html><head>dd</head><body>here is</body></html>';
procere TForm1.Button1Click(Sender:TObject);
var
str:string;
begin
str:='<html><head>dd</head><body>here is</body></html>';
SetHtml2009(WebBrowser1,str);
end;
Ⅲ delphi中WebBrowser控制項怎麼模擬點擊網頁框架中的按鈕button
假如按鈕Name或ID是 button1
var
o:Olevariant;
o := WebBrowser1.OleObject.document.all.item('button1',0);
o.click;
Ⅳ 關於delphi的webbrowser控制項求教,很簡單的問題
webbrowser1.navigate(url1);
while webbrowser1.readystate<>4 do
begin
application.processmessages;
sleep(100);
end;
webbrowser1.navigate(url2);
Ⅳ DELPHI 的WEBBROWSER控制項如何通過HTTP代理取得網頁
WebBrowser 是使用系統的 代理設置的。
如果,系統使用了代理, webbrowser 自動使用該代理
Ⅵ delphi里如何動態創建WebBrowser控制項,並通過其navigate()屬性調出需要顯示的地址。
從代碼看,少了一句給 WebBrowser 指定顯示的容器(窗體或面板的 句柄):
procereTForm1.Button1Click(Sender:TObject);
varwb:Twebbrowser;
begin
wb:=Twebbrowser.Create(self);
wb.ParentWindow:=Handle;//新增
wb.Left:=208;
wb.Top:=32;
wb.Height:=300;
wb.Width:=500;
wb.Navigate('D:123');
end;
運行測試代碼截圖:
Ⅶ 用delphi的WebBrowser控制項,我讓網頁中的某一個復選框或單選框獲得焦點,怎麼做呢
給你一個思路:
用IE打開你要的網站,按F12獲得腳本代碼.找到你想要的控制項名你可以摸擬操作控制項:
procereTForm1.RzBitBtn5Click(Sender:TObject);
var
ov:OleVariant;
begin
ov:=WebBrowser1.OleObject.document.all.item('password',0);{password表示網站的軟體框名稱或ID}
ov.Value:=Edit1.Text;//將Edit1的文本摸擬寫入網頁中的對應密碼輸入框.
end;
procereTForm1.RzBitBtn6Click(Sender:TObject);
var
ov:OleVariant;
begin
ov:=WebBrowser1.OleObject.document.all.item('btnlogin',0);{'btnlogin'代表網頁上的按鍵名或ID}
ov.Click;
end;
如此一來,只要你得知它的ID或是名稱.你就可以控制它:
Ⅷ Delphi中的WebBrowser控制項
拖一個webbrowser進來,如WebBrowser1
uses
MSHTML,ActiveX,OleCtrls,
SHDocVw;
定義這個函數。
procere
SetHtml2009(const
WebBrowser:
TWebBrowser;
const
Html:
string);
var
htmDoc:IHTMLDocument2;
v:oleVariant;
begin
if
not
Assigned(WebBrowser.Document)
then
Exit;
try
htmDoc:=WebBrowser.Document
as
IHtmlDocument2;
v
:=
VarArrayCreate([0,0],
varVariant);
v[0]:=Html;
htmDoc.Write(PSafeArray(TVarData(v).VArray));
htmDoc.Close;
except
end;
end;
formCreate時,初始化webbrowser。代碼如下:
var
v:oleVariant;
begin
v:='about:blank';
//初始化
WebBrowser1
WebBrowser1.Navigate2(v);
end;
在initialization和finalization部分處理OLE初始化
initialization
OleInitialize(nil);
finalization
try
OleUninitialize;
except
end;
在用到webbrowser的地方,定義一個字元串,如str:string;
這里存放你的HTML代碼,比如
str:='<html><head>dd</head><body>here
is</body></html>';
procere
TForm1.Button1Click(Sender:TObject);
var
str:string;
begin
str:='<html><head>dd</head><body>here
is</body></html>';
SetHtml2009(WebBrowser1,str);
end;
Ⅸ delphi 的 webbrowser控制項使用問題!
可以直接獲取網頁的源代碼,再進行截取即可;
s := webbrowser1.oleobject.document.body.innerhtml;
str:=(pos('background=',s),pos('width=',s)-pos('background=',s));
Ⅹ delphi中WebBrowser控制項的問題
(在已做好的軟體下方放一個網頁,地址為N。但是只顯示N中某一塊的內容,相當於剪切其中一部分來放在我的網頁中;) 這個真的不知道怎麼做
webbrowser沒這個功能吧..........
不過可以做一個跟webbrowser控制項一樣大小的網頁 這樣就跟你所說的那個是一樣的效果了,不過要重新做個網頁 這也花不了多長時間吧.
很多軟體都是這樣做的看上去是內鑲的控制項 其實是鏈接的網頁
比如說QQ音樂的音樂庫(現在已經禁止從IE訪問了 不過還是可以搜索到)
方法就是事先定義好的過程 在一個控制項的事例後面打.就可以看到了
具體的使用方法可以看 delphi的幫助
然後下面是一些 webbroser 的使用方法
1.獲取網頁中變數的值
例如:htm中<script> var currIDS=123</script>
程序中可以這樣調用 id := Form1.WebBrowser1.OleObject.Document.script.currIDS
備註:變數可以是javascript定義的,也可以是vbscript定義的,如果Webbrowser1中找不到該變數,調用會觸發一個異常事件,即變數currIDS不存在。
2.執行網頁中的函數
tmpf := 'currID = getNextID(currID)'+#13#10;
Form1.WebBrowser1.OleObject.Document.parentWindow.execScript(tmpf,'JavaScript');
調用函數的方法就是execScript介面,同樣,如果函數不存在,或者運行錯誤也會觸發腳本錯誤異常
3.設置網頁背景
背景圖片 WebBrowser1.OleObject.Document.body.background := 'http://seelearn.com/bg.gif' ;
背景顏色 WebBrowser1.OleObject.Document.body.bgcolor := '#eeeeee'
4.調用網頁中已知對象
src := WebBrowser1.OleObject.Document.getElementByID('img1').src
該方法其實就是javascript中的 getElementByID
5.獲取頁面中所有的frame
使用DHTML。
frames:=wb.OleObject.document.frames;
for i:=0 to frames.length do
memo1.lines.Add(frames[i].document.body.innerHTML);
6.BorderStyle=bsNone後Webbrowser會被重新初始化
這是一個讓人很意外的一個問題,Delphi在窗口控制項的控制方面做得非常好,很少出現這種BUG
根據分析,出現這個現象有很多情況 改變FormStyle也會出現 ; 如果 webbrowser.parent 由panel1 改到panel2.也會導致webbrowser重新初始化。
7.直接向Webbrowser中寫入html代碼,不需要Navigate到實際存在的文件
var
StrStream:TStringStream;
SetNoteStr: string;
begin
SetNoteStr :='<body bgcolor=222222 align=center><br><p align=center><font size=+2 color=#FFFFFF>點點博客 http://seelearn.com</font></p>';
SetNoteStr :=SetNoteStr+'<br><p align=center><font size=+2 color=#FFFFFF>點擊左邊按鈕可查看對應圖片</font></p>';
StrStream:=TStringStream.Create(SetNoteStr);
WebBrowser1.Navigate('about:blank');
try
StrStream.Position:=0;
( WebBrowser1.Document as IPersistStreamInit).Load(TStreamadapter.Create(StrStream));
finally
StrStream.Free;
end;
8.前進,後退,刷新
self.WebBrowser1.GoBack
self.WebBrowser1.GoForward
self.WebBrowser1.Refresh
9.捕捉NewWindow2事件,即新開窗口事件
procere TForm1.WebBrowser1NewWindow2(Sender: TObject;
var ppDisp: IDispatch; var Cancel: WordBool);
var
NewWindow: TForm2;
begin
//exit;
NewWindow:= TForm2.Create(nil);
NewWindow.Show;
ppDisp:= NewWindow.Webbrowser1.DefaultDispatch;
end;
值得一題的是該方法不能獲得新開窗口的URL,退一步的方法只能是等到在新的Webbrowser中觸發BeforeNavigate2事件判斷了
10.網頁中存在iframe時判斷頁面是否下載結束
procere TForm1.WebBrowser1DocumentComplete(Sender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
begin
if WebBrowser1.Application = pDisp then showmessage('頁面已全部下載完畢')
end;
備註:每個iframe下載完畢都會觸發DocumentComplete事件,所以一個頁面在真正下載完畢前可能被觸發多次