|
父窗口与其模态窗口相互通信演示
使用功能:
两者窗口之间通信利用了subscribe和publish订阅指令
子模态窗口里使用了新增的窗口函数winform.beforShowWindow() 和 winform.beforeDestroy ()
实现原理:
父窗口通过打开模态窗口之前发送订阅信息, 模态窗口显示之前获取到此订阅信息,然后展示信息并显示窗体 , 模态窗口中返回信息用了两种方式,1是利用窗口销毁前函数发送订阅信息, 2是通过模态终结指令endModal()返回信息.
适用范围:
窗体之间的传递信息
演示图像:

父窗体代码如下:
- import win.ui;
- /*DSG{{*/
- mainForm = win.form(text="与模态窗口相互通信演示";right=372;bottom=292)
- mainForm.add(
- button={cls="button";text="打开模态子窗口并附带参数";left=197;top=19;right=360;bottom=88;z=3};
- edit={cls="edit";text="你好啊,模态子窗口?";left=20;top=18;right=187;bottom=85;edge=1;multiline=1;z=1};
- edit2={cls="edit";left=18;top=107;right=359;bottom=186;edge=1;multiline=1;z=2};
- edit3={cls="edit";left=16;top=214;right=359;bottom=279;edge=1;multiline=1;z=4}
- )
- /*}}*/
-
- mainForm.button.oncommand = function(id,event){
-
-
- var frmChild,wb = mainForm.loadForm("\筛选器\testaa.aardio");
- publish("窗体之间传参",mainForm.edit.text)
- var chstr = frmChild.doModal();
- mainForm.edit3.text =chstr
-
-
- }
- subscribe("接收一个窗口销毁",function(...){
- mainForm.edit2.text = ...
- } )
-
-
- mainForm.enableDpiScaling();
- mainForm.show();
-
- return win.loopMessage();
复制代码
模态窗口代码如下:
- import win.ui;
- /*DSG{{*/
- var winform = win.form(text="模态子窗口";right=326;bottom=274;parent=...)
- winform.add(
- button={cls="button";text="关闭模态窗口并附带返回值";left=12;top=197;right=312;bottom=258;z=2};
- edit={cls="edit";left=12;top=13;right=315;bottom=185;edge=1;multiline=1;z=1}
- )
- /*}}*/
-
- winform.beforShowWindow = function(shown,status){
- subscribe("窗体之间传参",function(str){
-
- winform.edit.text = str;
-
- } )
- }
-
- winform.beforeDestroy = function(){
-
- publish("接收一个窗口销毁",'我是模态窗口销毁时候的返回消息:\r\n' ++ winform.edit.text)
-
- }
-
- winform.button.oncommand = function(id,event){
- winform.endModal('我是点击了关闭模态窗口的返回消息:\r\n' ++ "你好啊主窗口,我是模态窗口关闭附带的返回值.")
- }
-
- winform.enableDpiScaling();
- winform.show();
-
- win.loopMessage();
复制代码
|
|