IntraWeb怎样实现模式弹出窗口

 我来答
samhan
2016-11-05 · 知道合伙人互联网行家
samhan
知道合伙人互联网行家
采纳数:10996 获赞数:56045
对待工作认真负责,善于沟通、协调有较强的组织能力与团队精神。

向TA提问 私信TA
展开全部
在intraweb中实现弹出式窗口,一直是一个比较难的问题。在浏览网页时看见的不知道对你有没有帮助。不知道是不是你想要的那种效果。如果有帮助 还希望您能够采纳,谢谢!废话不多说了下面我们正式入题:
单击主页面中的返回数据输入框或点击按钮,就会出现右边的对话框,在对话框中填写数据,点击确认按钮后就可以把数据传给主页面中的输入框内。

首先要明确实现思路:
1、首先UserSessionUnit中创建以下变量
varTempform:TIWBaseForm;
FData:String;
FClose:Boolean;
varTempform用来记住弹出对话框的母窗口,此例中为Unit1窗口,FData用来传递对话框中传入的数据。FClose用来通知intraweb是否Free对话框窗口。
2、在ServerController加入以下事件,此函数目的是:在每次产生新的页面之前,分析从浏览器地址传回的数据,如果page参数的值为Dialogform,则生成TIWForm2的页面并显示出来。同时判断UserSession.FClose的真假,如果为真,表示对话框被关闭了,则将此值改为假,再将要显示的新页面设置为UserSession.varTempform,同时free对话框TIWForm2的页面。
procedure TIWServerController.IWServerControllerBaseBeforeRender(
ASession: TIWApplication; AForm: TIWBaseForm; var VNewForm: TIWBaseForm);
var
WebPara:STring;
begin
WebPara:=ASession.Request.QueryFields.Values['page'];
if WebPara='Dialogform' then
begin
VNewForm:=TIWForm2.Create(ASession); //生成TIWForm2的页面并显示出来
end;
if UserSession.FClose then
begin
UserSession.FClose:=False;
// 将要显示的新页面设置为UserSession.varTempform
VNewForm:=UserSession.varTempform;
WebApplication.ActiveForm.Free;// free对话框TIWForm2的页面
end;
end;
3、在Unit1窗口中加入IWButton1,将其隐藏在按钮IWButton2后面(将IWButton2的zindex设为1即可),给该按钮写如下事件,该事件将会被对话框网页关闭时调用。
procedure TIWForm1.IWButton1AsyncClick(Sender: TObject;
EventParams: TStringList);
begin
IWEdit1.Text:=UserSession.FData;//将对话框网页输入的参数传递给主页面的输入框
UserSession.FClose:=True;//表示对话框已经被关闭了
UserSession.varTempform:=Self;//对话框网页的母窗口
end;
4、给IWButton2加入如下事件,其实就是组合window.showModalDialog(sURL [, vArguments] [, sFeatures])网页模式对话框。
procedure TIWForm1.IWButton2Click(Sender: TObject);
var
tmp:string;
begin
tmp:='window.showModalDialog('+''''+'http://'+''''+'+window.location.host+'+''''+'/index.htm/'+''''+'+GTrackID+'+''''+'/'+''''+'+GAppID+'+''''+'/?page=Dialogform'+''''+',window,'+''''+'dialogWidth:400px;dialogHeight:260px;center:1;scroll:0;help:0;status:0'+''''+');IWBUTTON1_onclick();';
//生成的字符如下
http://127.0.0.1:90/index.htm/1/01o09u11y1ds5i1gg8a2e0it26or/?page=Dialogform
// window.location.host网站根地址,即上面的127.0.0.1:90
// GTrackID即上面的1,每次都会变化
// GAppID即上面的01o09u11y1ds5i1gg8a2e0it26or
// Dialogform我们前面在2中提到的参数page的值,一定要对应
// IWBUTTON1_onclick()就是对TIWForm1.IWButton1AsyncClick(Sender: TObject; EventParams: TStringList);事件的调用
//因为IWServerController.ExecCmd:='index.htm',所以用index.htm
AddToInitProc(tmp);
end;

以下为补充说明:
网页模式对话框使用方法如下:
vReturnValue = window.showModalDialog(sURL [, vArguments] [, sFeatures])
参数说明:
sURL
必选参数,类型:字符串。用来指定对话框要显示的文档的URL。
vArguments
可选参数,类型:变体。用来向对话框传递参数。传递的参数类型不限,包括数组等。对话框通过window.dialogArguments来取得传递进来的参数。
sFeatures
可选参数,类型:字符串。用来描述对话框的外观等信息,可以使用以下的一个或几个,用分号“;”隔开。
dialogHeight 对话框高度,不小于100px,IE4中dialogHeight 和dialogWidth 默认的单位是em,而IE5中是px,为方便其见,在定义modal方式的对话框时,用px做单位。
dialogWidth: 对话框宽度。
dialogLeft: 距离桌面左的距离。
dialogTop: 离桌面上的距离。
center: {yes | no | 1 | 0 }:窗口是否居中,默认yes,但仍可以指定高度和宽度。
help: {yes | no | 1 | 0 }:是否显示帮助按钮,默认yes。
resizable: {yes | no | 1 | 0 } [IE5+]:是否可被改变大小。默认no。
status: {yes | no | 1 | 0 } [IE5+]:是否显示状态栏。默认为yes[ Modeless]或no[Modal]。
scroll:{ yes | no | 1 | 0 | on | off }:指明对话框是否显示滚动条。默认为yes。
5、对话框Unit2中的事件如下:
procedure TIWForm2.IWAppFormCreate(Sender: TObject);
begin
UserSession.FData:='';//将参数置空
end;

procedure TIWForm2.IWButton2AsyncClick(Sender: TObject;
EventParams: TStringList);
begin
UserSession.FData:=''; //给参数赋值
AddToInitProc('window.close();');//加入关闭网页的代码
end;

procedure TIWForm2.IWButtonAsyncClick(Sender: TObject;
EventParams: TStringList);
begin
//这里处理数据交换问题
UserSession.FData:=IWEdit1.Text; //给参数赋值
AddToInitProc('window.close();'); //加入关闭网页的代码
end;
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式