点击webbrowser中的一个URL能打开一个窗体吗? 最近发现一个软件,主界面就用webbrowser载入一个html页面,点击html的某一块区域,可以弹出相对应的form,请问这样的功能是如何实现的?大家给点思路,问题一解决即散分. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用ActiveX,网页中用脚本调用相应的ActiveXForm就可以了 页面中不同的区域指向不同的url,处理browser控件的BeforeNavigate2事件,在事件处理函数中弹出相应的form。 接 hyqer ,如果要自己弹出窗口,记住把事件中的参数 Cancel 设置为 false 。 or use scripts in the HTML and override IDocHostUIHandler::GetExternal to make your application scriptable. http://www.delphidabbler.com/articles?article=22&part=3 给你一段我的窗体代码吧ufrmRepCenter.pas-----------------------unit ufrmRepCenter;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ufrmBaseMDI, OleCtrls, SHDocVw;type TfrmRepCenter = class(TfrmBaseMDI) wb: TWebBrowser; procedure FormCreate(Sender: TObject); procedure wbDocumentComplete(Sender: TObject; const pDisp: IDispatch; var URL: OleVariant); procedure wbBeforeNavigate2(Sender: TObject; const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData, Headers: OleVariant; var Cancel: WordBool); private { Private declarations } public { Public declarations } end;var frmRepCenter: TfrmRepCenter; bLoaded:Boolean;implementationuses uAppFunction, ufrmShowReport;{$R *.dfm}procedure TfrmRepCenter.FormCreate(Sender: TObject);begin inherited; bLoaded:=False; wb.Navigate(TMyApp.GetAppPath+'html/Reportcenter.html'); bLoaded:=True;end;procedure TfrmRepCenter.wbDocumentComplete(Sender: TObject; const pDisp: IDispatch; var URL: OleVariant);begin inherited; wb.oleobject.Document.body.Scroll := 'no';end;procedure TfrmRepCenter.wbBeforeNavigate2(Sender: TObject; const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData, Headers: OleVariant; var Cancel: WordBool);var sURL: string; I: Integer; f: TForm;begin inherited; if bLoaded then begin sURL:=ExtractFileName(String(URL)); I:=StrToInt(sURL); frmShowReport:= TfrmShowReport.Create(I,self); frmShowReport.Show; Cancel:=True; end; end;end.ufrmRepCenter.dfm-----------------------inherited frmRepCenter: TfrmRepCenter Left = 228 Top = 190 Caption = #25253#34920#20013#24515 OldCreateOrder = True OnCreate = FormCreate PixelsPerInch = 96 TextHeight = 13 object wb: TWebBrowser Left = 0 Top = 0 Width = 688 Height = 453 Align = alClient TabOrder = 0 OnBeforeNavigate2 = wbBeforeNavigate2 OnDocumentComplete = wbDocumentComplete ControlData = { 4C0000001B470000D22E00000000000000000000000000000000000000000000 000000004C000000000000000000000001000000E0D057007335CF11AE690800 2B2E126208000000000000004C0000000114020000000000C000000000000046 8000000000000000000000000000000000000000000000000000000000000000 00000000000000000100000000000000000000000000000000000000} endend 抱歉,一句话说反了,是敲反了。记住把事件中的参数 Cancel 设置为 false 应该为记住把事件中的参数 Cancel 设置为 True 关于cxgrid显示金额的问题! 请问如何判断姓名卡号金额字段? 请教有关DELPHI调用C++的DLL的问题!!! 调查DELPHI编写程序在AMD机器运行的问题 dbExpress问题?? 流水账号的问题??急用呀??? 请高手指点,关于类作为参数 关于文件的问题? 如何 TextToForm ? 在的DELPHI5中如何取文体框中的某个或任意一个字符。请各位高手帮助,多谢!!! 两个图片叠加,如何透过上面图片的部分区域看到下面的图片? 数据库查询问题,大家帮我看一下这个语句有什么问题?
ufrmRepCenter.pas
-----------------------
unit ufrmRepCenter;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ufrmBaseMDI, OleCtrls, SHDocVw;type
TfrmRepCenter = class(TfrmBaseMDI)
wb: TWebBrowser;
procedure FormCreate(Sender: TObject);
procedure wbDocumentComplete(Sender: TObject; const pDisp: IDispatch;
var URL: OleVariant);
procedure wbBeforeNavigate2(Sender: TObject; const pDisp: IDispatch;
var URL, Flags, TargetFrameName, PostData, Headers: OleVariant;
var Cancel: WordBool);
private
{ Private declarations }
public
{ Public declarations }
end;var
frmRepCenter: TfrmRepCenter;
bLoaded:Boolean;
implementationuses uAppFunction, ufrmShowReport;{$R *.dfm}procedure TfrmRepCenter.FormCreate(Sender: TObject);
begin
inherited;
bLoaded:=False;
wb.Navigate(TMyApp.GetAppPath+'html/Reportcenter.html');
bLoaded:=True;
end;procedure TfrmRepCenter.wbDocumentComplete(Sender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
begin
inherited;
wb.oleobject.Document.body.Scroll := 'no';
end;procedure TfrmRepCenter.wbBeforeNavigate2(Sender: TObject;
const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
Headers: OleVariant; var Cancel: WordBool);
var
sURL: string;
I: Integer;
f: TForm;
begin
inherited;
if bLoaded then
begin
sURL:=ExtractFileName(String(URL));
I:=StrToInt(sURL);
frmShowReport:= TfrmShowReport.Create(I,self);
frmShowReport.Show;
Cancel:=True;
end;
end;end.ufrmRepCenter.dfm
-----------------------
inherited frmRepCenter: TfrmRepCenter
Left = 228
Top = 190
Caption = #25253#34920#20013#24515
OldCreateOrder = True
OnCreate = FormCreate
PixelsPerInch = 96
TextHeight = 13
object wb: TWebBrowser
Left = 0
Top = 0
Width = 688
Height = 453
Align = alClient
TabOrder = 0
OnBeforeNavigate2 = wbBeforeNavigate2
OnDocumentComplete = wbDocumentComplete
ControlData = {
4C0000001B470000D22E00000000000000000000000000000000000000000000
000000004C000000000000000000000001000000E0D057007335CF11AE690800
2B2E126208000000000000004C0000000114020000000000C000000000000046
8000000000000000000000000000000000000000000000000000000000000000
00000000000000000100000000000000000000000000000000000000}
end
end
记住把事件中的参数 Cancel 设置为 false
应该为
记住把事件中的参数 Cancel 设置为 True