子窗口调用父窗口函数是比较常用的编程技术,通常用于把功能分解模块化到多窗口的程序中,比如一个程序有登陆窗口、主窗口、管理窗口、编辑窗口、查询窗口等,就需要父子窗口之间互相通信,互相操作对方。下面演示一个最简单的父子窗口互动编程教程:
1.新建win窗口工程
2.工程资源管理器资源文件文件夹上右键,新建窗口文件
3.把child1.aardio拖到main.aardio里,会自动生成引用代码
4.在子窗口上放一个按钮,双击进去,写上代码
5.在主窗口里写上函数
这里要注意把函数作为主窗口mainForm的成员函数,不然子窗口调用时会报null。
主窗口源码:
import win.ui; /*DSG{{*/ mainForm = win.form(text="简码编程 jianma123.com";right=759;bottom=469) mainForm.add( edit={cls="edit";left=14;top=246;right=743;bottom=455;db=1;dl=1;dr=1;dt=1;edge=1;multiline=1;z=1} ) /*}}*/
//注意这里是 mainForm. 即是 主窗口加法 变成了mainForm的成员函数 mainForm.主窗口加法 = function(a,b){ win.msgbox(a+b) }
var frmChild,wb = mainForm.loadForm("\res\child1.aardio"); frmChild.show();
mainForm.enableDpiScaling(); mainForm.show();
return win.loopMessage();
|
子窗口源码:
import win.ui; /*DSG{{*/ var winform = win.form(text="简码编程 jianma123.com 子窗口";right=387;bottom=241;parent=...) winform.add( button={cls="button";text="button";left=122;top=83;right=256;bottom=139;z=1} ) /*}}*/ //注意窗口构建代码里有 parent=...
winform.button.oncommand = function(id,event){ winform.parent.主窗口加法(1,2);// winform.parent指的是用loadForm()加载之个子窗口的父对象
}
winform.enableDpiScaling(); winform.show();
win.loopMessage(); return winform;//注意这里返回窗口对象给父窗口
|
其它:
父子窗口的互相调用操作,还有在父窗口或子窗口里定义全局变量、全局函数等方法,请自行研究。