webbrowser 动态创建 如何响应 newwindow 等事件?

lzhqlj 2009-04-30 12:20:31
没找到满意的答案啊
...全文
189 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
lzhqlj 2009-05-03
  • 打赏
  • 举报
回复
哦 原来在之间写点代码就可以了
但是现在
procedure qlj(Sender: TObject;const pDisp: IDispatch; var URL: OleVariant);
procedure TForm1.qlj(Sender: TObject;const pDisp: IDispatch; var URL: OleVariant);
begin
showmessage('ddsdsd');
end;

wb[1].OnDownloadComplete:=qlj;

出现了 Parameter lists differ 的错误代码 郁闷啊
lzhqlj 2009-05-03
  • 打赏
  • 举报
回复
而且 我照上面的写完 点运行
procedure TForm1.lzh(Sender: TObject; var ppDisp: IDispatch; var Cancel: WordBool);
begin

end;
自己就没了。。。。。
lzhqlj 2009-05-03
  • 打赏
  • 举报
回复
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, OleCtrls, SHDocVw;

type
TForm1 = class(TForm)
PageControl1: TPageControl;
PageControl2: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
TabSheet3: TTabSheet;
TabSheet4: TTabSheet;
Button1: TButton;
WebBrowser1: TWebBrowser;
procedure Button1Click(Sender: TObject);
procedure lzh(Sender: TObject; var ppDisp: IDispatch; var Cancel: WordBool);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

wb:array[1..2] of TWebBrowser;
implementation

{$R *.dfm}
procedure TForm1.lzh(Sender: TObject; var ppDisp: IDispatch; var Cancel: WordBool);
begin

end;
procedure TForm1.Button1Click(Sender: TObject);
begin
wb[1]:=TWebbrowser.Create(Self);

wb[1].ParentWindow:=form1.PageControl1.Pages[0].Handle ;
wb[1].Align:=alClient;
wb[1].Navigate('http://10.65.10.34/jgzxsearch/wzc/cq.aspx');
wb[1].OnNewWindow2:=lzh;

end;



end.
======
改了 不好用啊 疯了
devhp 2009-05-03
  • 打赏
  • 举报
回复

procedure lzh(Sender: TObject; var ppDisp: IDispatch; var Cancel: WordBool);
begin

end;

改成
procedure Tform1.lzh(Sender: TObject; var ppDisp: IDispatch; var Cancel: WordBool);
begin

end;


看看
lzhqlj 2009-05-03
  • 打赏
  • 举报
回复
整个代码
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, OleCtrls, SHDocVw;

type
TForm1 = class(TForm)
PageControl1: TPageControl;
PageControl2: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
TabSheet3: TTabSheet;
TabSheet4: TTabSheet;
Button1: TButton;
WebBrowser1: TWebBrowser;
procedure Button1Click(Sender: TObject);
//procedure lzh(Sender: TObject; var ppDisp: IDispatch; var Cancel: WordBool);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

wb:array[1..2] of TWebBrowser;
implementation

{$R *.dfm}
procedure lzh(Sender: TObject; var ppDisp: IDispatch; var Cancel: WordBool);
begin

end;
procedure TForm1.Button1Click(Sender: TObject);
begin
wb[1]:=TWebbrowser.Create(Self);

wb[1].ParentWindow:=form1.PageControl1.Pages[0].Handle ;
wb[1].Align:=alClient;
wb[1].Navigate('http://10.65.10.34/jgzxsearch/wzc/cq.aspx');
wb[1].OnNewWindow2:=lzh;

end;



end.
lzhqlj 2009-05-03
  • 打赏
  • 举报
回复
ype
TForm1 = class(TForm)
PageControl1: TPageControl;
PageControl2: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
TabSheet3: TTabSheet;
TabSheet4: TTabSheet;
Button1: TButton;
WebBrowser1: TWebBrowser;
procedure Button1Click(Sender: TObject);
procedure lzh(Sender: TObject; var ppDisp: IDispatch; var Cancel: WordBool);

也不对啊
lzhqlj 2009-05-03
  • 打赏
  • 举报
回复
哥哥 能说详细点吗? 得有好几年没用DELPHI了 都忘了啊
zshsuming 2009-05-03
  • 打赏
  • 举报
回复
你没定义函数啊```我晕``
lzhqlj 2009-05-03
  • 打赏
  • 举报
回复
procedure TForm1.Button1Click(Sender: TObject);
begin
wb[1]:=TWebbrowser.Create(Self);

wb[1].ParentWindow:=form1.PageControl1.Pages[0].Handle ;
wb[1].Align:=alClient;
wb[1].Navigate('http://10.65.10.34/jgzxsearch/wzc/cq.aspx');
wb[1].OnNewWindow2 :=lzh;

end;

procedure lzh(Sender: TObject; var ppDisp: IDispatch; var Cancel: WordBool);
begin

end;
运行后显示 UUndeclared identifier:'lzh'
如何处理 谢谢啊
bdmh 2009-04-30
  • 打赏
  • 举报
回复

自己定义一个事件
procedure MyNewWindow2(Sender: TObject; var ppDisp: IDispatch; var Cancel: WordBool);

WebBrowser1为动态创建的,创建后
WebBrowser1.OnNewWindow2 := MyNewWindow2;
sparklerl 2009-04-30
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 bdmh 的回复:]
Delphi(Pascal) code自己定义一个事件procedureMyNewWindow2(Sender: TObject;varppDisp: IDispatch;varCancel: WordBool);

WebBrowser1为动态创建的,创建后
WebBrowser1.OnNewWindow2 :=MyNewWindow2;
[/Quote]
up

1,593

社区成员

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

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