如何响应网页里面按钮的事件? 我放了一个TWebBrowser,里面载入了一个id为btn的input按钮怎样响应它被点击的事件? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用NMUDP1控件的DataReceived事件就可以啦~ 那是在网页里做的<script LANGUAGE=javascript>function btnclick(){ //事件代码}--!><input name='btn' onclick=btnclick ...> 给你一个例子<html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><meta name="GENERATOR" content="Microsoft FrontPage 4.0"><meta name="ProgId" content="FrontPage.Editor.Document"><title>New Page 1</title><script language='javascript'>function confirmsubmit(){return alert("在此输入提示信息");}</script></head><body><form method="POST" action="--WEBBOT-SELF--"><input type="button" value="按钮" name="B3" onclick=confirmsubmit() ></form></body></html> 先问:是用DELPHI编的ACTIVE控件在WEB中用吗?用按钮触发该控件的事件? 根据事件偏移量调用相应的方法或者激发事件实现IDispatch接口的Invoke方法function TJKCEventSink.Invoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; Flags: Word; var Params; VarResult, ExcepInfo, ArgErr: Pointer): HRESULT;begin case DispID of //根据事件偏移量调用相应的方法或者激发事件 -600:onclick(FOwner.event); -2147418104:onmouseover(FOwner.event); 1023:oncontextmenu(FOwner.event); -606:onmousemove(FOwner.event); -601:if Assigned(OnDbClick) then OnDbClick(FOwner.event); //激发事件 end; Result := S_OK;end; 这么复杂啊?我看不懂?下面这样可不可以啊? o := WebBrowser1.OleObject.document.all.item('btn',0); o.onClick=我程序里面的一个函数名 我现在手上没有Delphi测试,那位帮我验证一下可以的话一样给分,谢谢! 不行,必须要有一个事件代理TEventSink。够详细了吧TEventSink= class(TInterfacedObject,IUnknown, IDispatch)procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject; const pDisp: IDispatch; var URL: OleVariant);var doc:IHTMLDocument2; ele:IHTMLMarqueeElement; eee:IHTMLElement; event:HTMLButtonElementEvents; CPC: IConnectionPointContainer; CP,pp: IConnectionPoint; Connection:LongInt; Enum: IEnumConnectionPoints;begin //ii.onclick(nil); Connection:=-600; if(WebBrowser1.Document<>nil) then begin WebBrowser1.Document.QueryInterface(IID_IHTMLDocument2,doc); if(doc<>nil) then begin if(doc.all.item('bbb',0)<>nil) then begin doc.all.item('bbb',0).QueryInterface(IID_IHTMLElement,eee); myEvent:=TJKCEventSink.Create(doc.parentWindow,doc.body); myEvent1:=TJKCEventSink.Create(doc.parentWindow,eee); doc.all.item('iii',0).QueryInterface(IID_IHTMLElement,eee); myEvent2:=TJKCEventSink.Create(doc.parentWindow,eee); doc.all.item('hhh',0).QueryInterface(IID_IHTMLElement,eee); myEvent3:=TJKCEventSink.Create(doc.parentWindow,eee); myEvent.OnDbClick:=OnElementDbClick; myEvent1.OnDbClick:=OnElementDbClick; myEvent2.OnDbClick:=OnElementDbClick; myEvent3.OnDbClick:=OnElementDbClick; end; end; end;end; 如果你的这个button是submit的话可以在webbroswer的submit事件中捕获这个消息,如果不是的话....公司机子上什么资料都没有,回家在我的爱机上给你找找,我记得有办法地 谢谢!IConnectionPointContainer这个类型在哪个包里面啊?麻烦了! delphi7企业版,哪里有下载?知道的兄弟帮帮忙。我搜了N久,累死我了。 分组报表的制作——————在线等待!!!! 身为程序员。你不得不看!!! 实习找发展!! 帮忙看个例子 如何隐藏同种类型的控件 delphi有奖 打开子窗体在关闭主窗体后报错 如何在Word中使用数据库 TRxRichEdit 是什么?哪里有?对中文的支持如何? 关于添加数据的问题,谢谢 触发事件能不能动态?比如将触发事件写在一个ini文件中,动态调用
<script LANGUAGE=javascript>
function btnclick()
{
//事件代码
}--!>
<input name='btn' onclick=btnclick ...>
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>New Page 1</title>
<script language='javascript'>
function confirmsubmit(){
return alert("在此输入提示信息");}
</script>
</head><body><form method="POST" action="--WEBBOT-SELF--">
<input type="button" value="按钮" name="B3" onclick=confirmsubmit() >
</form></body></html>
实现IDispatch接口的Invoke方法function TJKCEventSink.Invoke(DispID: Integer; const IID: TGUID;
LocaleID: Integer; Flags: Word; var Params; VarResult, ExcepInfo,
ArgErr: Pointer): HRESULT;begin
case DispID of //根据事件偏移量调用相应的方法或者激发事件
-600:onclick(FOwner.event);
-2147418104:onmouseover(FOwner.event);
1023:oncontextmenu(FOwner.event);
-606:onmousemove(FOwner.event);
-601:if Assigned(OnDbClick) then OnDbClick(FOwner.event); //激发事件
end;
Result := S_OK;
end;
o := WebBrowser1.OleObject.document.all.item('btn',0);
o.onClick=我程序里面的一个函数名
TEventSink= class(TInterfacedObject,IUnknown, IDispatch)
procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
var
doc:IHTMLDocument2;
ele:IHTMLMarqueeElement;
eee:IHTMLElement;
event:HTMLButtonElementEvents;
CPC: IConnectionPointContainer;
CP,pp: IConnectionPoint;
Connection:LongInt;
Enum: IEnumConnectionPoints;
begin
//ii.onclick(nil);
Connection:=-600;
if(WebBrowser1.Document<>nil) then
begin
WebBrowser1.Document.QueryInterface(IID_IHTMLDocument2,doc);
if(doc<>nil) then
begin
if(doc.all.item('bbb',0)<>nil) then
begin
doc.all.item('bbb',0).QueryInterface(IID_IHTMLElement,eee);
myEvent:=TJKCEventSink.Create(doc.parentWindow,doc.body);
myEvent1:=TJKCEventSink.Create(doc.parentWindow,eee);
doc.all.item('iii',0).QueryInterface(IID_IHTMLElement,eee);
myEvent2:=TJKCEventSink.Create(doc.parentWindow,eee);
doc.all.item('hhh',0).QueryInterface(IID_IHTMLElement,eee);
myEvent3:=TJKCEventSink.Create(doc.parentWindow,eee);
myEvent.OnDbClick:=OnElementDbClick;
myEvent1.OnDbClick:=OnElementDbClick;
myEvent2.OnDbClick:=OnElementDbClick;
myEvent3.OnDbClick:=OnElementDbClick;
end;
end;
end;
end;
IConnectionPointContainer
这个类型在哪个包里面啊?麻烦了!