當前位置:首頁 » 網頁前端 » delphiweb控制項
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

delphiweb控制項

發布時間: 2022-12-20 09:28:10

Ⅰ 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事件,所以一個頁面在真正下載完畢前可能被觸發多次