如何响应网页里面按钮的事件?

swamper 2003-10-29 11:29:27
我放了一个TWebBrowser,里面载入了一个id为btn的input按钮
怎样响应它被点击的事件?
...全文
116 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
swamper 2003-10-31
  • 打赏
  • 举报
回复
谢谢!
IConnectionPointContainer
这个类型在哪个包里面啊?麻烦了!
duduwolf 2003-10-30
  • 打赏
  • 举报
回复
如果你的这个button是submit的话可以在webbroswer的submit事件中捕获这个消息,如果不是的话....公司机子上什么资料都没有,回家在我的爱机上给你找找,我记得有办法地
icefire_cwj 2003-10-30
  • 打赏
  • 举报
回复
不行,必须要有一个事件代理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;
swamper 2003-10-29
  • 打赏
  • 举报
回复
我现在手上没有Delphi测试,那位帮我验证一下可以的话一样给分,谢谢!
swamper 2003-10-29
  • 打赏
  • 举报
回复
这么复杂啊?我看不懂?下面这样可不可以啊?
o := WebBrowser1.OleObject.document.all.item('btn',0);
o.onClick=我程序里面的一个函数名
icefire_cwj 2003-10-29
  • 打赏
  • 举报
回复
根据事件偏移量调用相应的方法或者激发事件
实现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;
qhlkj 2003-10-29
  • 打赏
  • 举报
回复
先问:是用DELPHI编的ACTIVE控件在WEB中用吗?用按钮触发该控件的事件?
swamper 2003-10-29
  • 打赏
  • 举报
回复
你没明白我的意思
网页里面的按钮被按下以后,激活一个程序中的事件!
RockEx 2003-10-29
  • 打赏
  • 举报
回复
给你一个例子
<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>
RockEx 2003-10-29
  • 打赏
  • 举报
回复
那是在网页里做的
<script LANGUAGE=javascript>
function btnclick()
{
//事件代码
}

--!>


<input name='btn' onclick=btnclick ...>

swamper 2003-10-29
  • 打赏
  • 举报
回复
我资质平凡能否详细讲解一下?100分给您了!
programgirl 2003-10-29
  • 打赏
  • 举报
回复
用NMUDP1控件的DataReceived事件就可以啦~

1,594

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧