delphi 子窗体如何调用父窗体的方法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了delphi 子窗体如何调用父窗体的方法相关的知识,希望对你有一定的参考价值。
这要看你创建子窗口是如何创建的了。一般来说,如果是你TForm.Create(Self),
这个self就是你的父窗口,
你在子窗口就可以使用Self.Owner AS TForm,来调用父窗口的方法了。
另外要注意交叉引用的问题,
一个需要公开引用一个只能私有引用。 参考技术A 首先要引用父窗体的单元,其次方法应该要是Public或Published 参考技术B 需要toolsapi相关知识才可解决,简单的将窗体的父类型改变下是解决不了的
参考TOOLSAPI单元中IOTAModuleCreator的定义
在父窗体中用showModalDialog方式打开一个页面,并在页面中删除一条记录,成功后刷新本页面,再关闭本页面
再关闭本页面时刷新父窗体,怎么做?
showModalDialog 是打一个模式窗口,模式窗口的意思是不关闭后打开的窗口就操作不了前一个窗口,比如打开IE,再点Internet选项一样,Internet就是一个模式窗口。window.showModalDialog(URL,dialogArgments.features) 打开一个新窗口(IE4、IE5、IE6支持,在IE7中没有window.showModalDialog这个方法,所以取不到该值 。你可以实现有其它方法来实现这个)。dialogArgments为设定好传递给新视窗网页的参数,可以为任意数据类型。 调用格式为featureName1:featureValue1:(分号)featureName2:featureValue2: certer , dialogHeight, dialogLeft,dialogTop,dialogWidth,help(是否显示help按钮,下同),status,resizeable 值=1为yes,0为no.我认为最重要的是dialogArgments,可以传递值到新的窗口。
第二重要就是它的返回值 window.returnValue.可以在showModalDialog开启的窗口关闭后前,回传一个任意类型的值。
-----------------------------------------------删除---------------------------------------------------------------
不明白你指的删除什么意思,不是直接删除表单数据吧,还是删除数据库中数据。
-----------------------------------------------刷新---------------------------------------------------------------
在showModalDialog里是不能按F5刷新的,又不能弹出菜单。这个只能依靠javascript了,以下是相关代码:
<body onkeydown="if (event.keyCode==116)reload.click()">
<a id="reload" href="filename.htm" style="display:none">reload...</a>
将filename.htm替换成网页的名字然后将它放到你打开的网页里,按F5就可以刷新了,注意,这个要配合<base target="_self">使用,不然你按下F5会弹出新窗口的。
-----------------------------------------------关闭---------------------------------------------------------------
用javascript关掉showModalDialog(或showModelessDialog)打开的窗口。
<input type="button" value="关闭" onclick="window.close()">
也要配合<base target="_self">,不然会打开一个新的IE窗口,然后再关掉的。 参考技术A 如果只是要完成这个功能,干嘛不直接跳转到另外一个页面处理,处理完后再跳转回去。
以上是关于delphi 子窗体如何调用父窗体的方法的主要内容,如果未能解决你的问题,请参考以下文章