找回密码
 立即注册

微信登录

只需一步,快速开始

QQ登录

只需一步,快速开始

搜索
查看: 440|回复: 8

[分享] 子窗体随意显示及隐藏父窗体

[复制链接]
  • TA的每日心情
    慵懒
    2024-7-6 19:54
  • 签到天数: 106 天

    连续签到: 1 天

    [LV.6]常住居民II

    35

    主题

    136

    回帖

    1136

    积分

    金牌会员

    积分
    1136
    来自: 中国
    发表于 2024-2-12 23:11:24 | 显示全部楼层 |阅读模式 来自: 中国
    非业余 - aardio 编程语言 - 非官方问答社区
    限时85折!暑假期间,用aardio培训班充实自己!https://mp.weixin.qq.com/s/c4Z8sZPOiMh_OTG2VPOJmA
    Aardio培训大揭秘,轻松上手打造个人项目!https://mp.weixin.qq.com/s/cr47qhp_Cpz0p57lbbPwug
    aardio风行者第二期培训班https://mp.weixin.qq.com/s/uB6XHUDnGSk0JlWuiBE9AA
    本帖最后由 rmajly 于 2024-2-25 18:58 编辑

    父窗体想把子窗体显示或隐藏起来很容易,但是反过来可能稍复杂些。注意子窗体放到工程的res文件夹下,另外工程的资源文件的属性中内嵌资源选true

    父窗体代码:
    [AAuto] 纯文本查看 复制代码
    import win.ui;
    /*DSG{{*/
    var winform = win.form(parent=...; right=349;text="winform.parent";bottom=249 )
    winform.add(
    btnShowChild={ bottom=191;text="显示子窗口";left=167;top=164;z=1;right=289;cls="button" }
    )
    /*}}*/
    
    winform.btnShowChild.oncommand = function(id,event){
        var child,wb = winform.loadForm("\res\child.aardio",winform /*指定父窗口*/ );
        child.btnHide.oncommand = function(id,event){
            winform.show(false);
            child.btnShow.disabled = false;
        }
        child.btnShow.oncommand = function(id,event){
            winform.show(true);
            child.btnShow.disabled = true;
        }
        child.doModal();
    }
    winform.show()
    win.loopMessage();
    return winform;



    下面是子窗体代码:
    [AAuto] 纯文本查看 复制代码
    import win.ui;
    /*DSG{{*/
    var winform = win.form(parent=...; exmode="none";min=false;bottom=112;max=false;right=162;border="thin";text="winform.child" )
    winform.add(
    btnShow={ disabled=1;bottom=41;right=131;left=36;top=20;z=1;text="显示父窗口";cls="button" };
    btnHide={ bottom=80;text="隐藏父窗口";left=37;top=59;z=2;right=132;cls="button" }
    )
    /*}}*/
    winform.show()
    win.loopMessage();
    return winform;


    非业余 - aardio 编程语言 - 非官方问答社区
    限时85折!暑假期间,用aardio培训班充实自己!https://mp.weixin.qq.com/s/c4Z8sZPOiMh_OTG2VPOJmA
    Aardio培训大揭秘,轻松上手打造个人项目!https://mp.weixin.qq.com/s/cr47qhp_Cpz0p57lbbPwug
    aardio风行者第二期培训班https://mp.weixin.qq.com/s/uB6XHUDnGSk0JlWuiBE9AA
    回复

    使用道具 举报

  • TA的每日心情
    开心
    昨天 07:25
  • 签到天数: 163 天

    连续签到: 33 天

    [LV.7]常住居民III

    4

    主题

    162

    回帖

    2198

    积分

    管理员

    积分
    2198
    来自: 中国福建泉州
    发表于 2024-2-16 09:20:23 | 显示全部楼层 来自: 中国福建泉州
    谢谢,分享
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-2-19 19:20
  • 签到天数: 7 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    2

    主题

    13

    回帖

    73

    积分

    注册会员

    积分
    73
    来自: 中国广西南宁
    发表于 2024-2-16 11:26:39 | 显示全部楼层 来自: 中国广西南宁
    谢谢,分享
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-4-9 07:31
  • 签到天数: 30 天

    连续签到: 1 天

    [LV.5]常住居民I

    5

    主题

    27

    回帖

    329

    积分

    中级会员

    积分
    329
    来自: 中国河北秦皇岛
    发表于 2024-2-17 16:45:21 | 显示全部楼层 来自: 中国河北秦皇岛
    感谢分享!
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-6-2 16:37
  • 签到天数: 15 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    2

    主题

    17

    回帖

    158

    积分

    注册会员

    积分
    158
    来自: 中国安徽安庆
    发表于 2024-2-23 08:03:03 | 显示全部楼层 来自: 中国安徽安庆
    谢谢分享!
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2024-7-6 19:54
  • 签到天数: 106 天

    连续签到: 1 天

    [LV.6]常住居民II

    35

    主题

    136

    回帖

    1136

    积分

    金牌会员

    积分
    1136
    来自: 中国
     楼主| 发表于 2024-2-25 18:45:00 | 显示全部楼层 来自: 中国
    本帖最后由 rmajly 于 2024-2-25 18:56 编辑

        我们的程序在使用过程中,还是会感觉不爽:
        不爽之一:子窗体上有两个按钮:“显示父窗口”、“隐藏父窗口”,搞一个按钮不行吗?
         改之:软件打开,父窗口显示了,子窗口上唯一的按钮上字样是“隐藏父窗口”,点击它,父窗口隐藏了,于是,按钮上字样又自动变成“显示父窗口”,再点击,父窗口又出现了。这样不是很爽吗?
        不爽之二:隐藏了父窗口后,子窗口关闭掉了,父窗口在黑暗中高喊:你走了,我呢?对呀,父窗口到哪里去找?
        改之:子窗口关闭,父窗口自动显身!这样点击按钮“显示父窗口”及关闭子窗口,都会显示父窗口。
        程序就在不断折腾中逐渐完善、完美。
    [AAuto] 纯文本查看 复制代码
    //主窗口代码
    import win.ui;
    /*DSG{{*/
    var winform = win.form(text="winform.parent";right=349;bottom=249;parent=...)
    winform.add(
    btnShowChild={cls="button";text="显示子窗口";left=167;top=164;right=289;bottom=191;z=1}
    )
    /*}}*/
    
    winform.btnShowChild.oncommand = function(id,event){
        var frmChild,wb = winform.loadForm("\res\child.aardio",winform /*指定父窗口*/ );
        frmChild.btnShow.oncommand = function(id,event){
            if(win.isVisible(winform.hwnd)){
                winform.show(false);
                frmChild.btnShow.text = "显示父窗口";
            } else {
                winform.show(true);
                frmChild.btnShow.text = "隐藏父窗口";
            }
        }
    
            frmChild.onClose = function(){
                winform.show();
                frmChild.show(false);
                return false;    
            }
    
           frmChild.doModal();
    }
    
    winform.show()
    win.loopMessage();
    return winform;
    




    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2024-7-6 19:54
  • 签到天数: 106 天

    连续签到: 1 天

    [LV.6]常住居民II

    35

    主题

    136

    回帖

    1136

    积分

    金牌会员

    积分
    1136
    来自: 中国
     楼主| 发表于 2024-2-25 18:47:06 | 显示全部楼层 来自: 中国
    [AAuto] 纯文本查看 复制代码
    //子窗口代码
    import win.ui;
    import winex
    /*DSG{{*/
    var frmChild = win.form(text="winform.child";right=162;bottom=112;border="thin";exmode="none";max=false;min=false;parent=...)
    frmChild.add(
    btnShow={cls="button";text="隐藏父窗口";left=34;top=38;right=129;bottom=59;z=1}
    )
    /*}}*/
    
    frmChild.show()
    win.setTopmost( frmChild.hwnd )//使子窗体一直置顶,显示在最前面
    win.loopMessage();
    return frmChild;
    
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2024-7-6 19:54
  • 签到天数: 106 天

    连续签到: 1 天

    [LV.6]常住居民II

    35

    主题

    136

    回帖

    1136

    积分

    金牌会员

    积分
    1136
    来自: 中国
     楼主| 发表于 2024-2-25 18:54:16 | 显示全部楼层 来自: 中国
    当然,有人想把父、子窗体代码写在一起,这样玩也行。下面的代码是我练手用的,简单粗暴,但有用。

    [AAuto] 纯文本查看 复制代码
    import win.ui;
    /*DSG{{*/
    var winform = win.form(text="父";right=448;bottom=281;parent=...)
    winform.add(
    button1={cls="button";text="button1";left=207;top=103;right=284;bottom=135;z=1}
    )
    /*}}*/
    
    winform.show()
    frmChild = ..win.form( bottom=192;parent=...;text="子";right=344 )
    frmChild.add(
    button2={ bottom=135;right=284;left=207;top=103;z=1;text="button2";cls="button" }
    )
    
    winform.button1.oncommand = function(id,event){
        frmChild.show(true)         
    }
    
    frmChild.button2.oncommand = function(id,event){
        winform.show(false)         
    }
    
    frmChild.onClose = function(){
    	winform.show();
        frmChild.show(false);
        return false;    
    }
    
    win.loopMessage();


    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2024-3-20 10:26
  • 签到天数: 18 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    20

    主题

    39

    回帖

    441

    积分

    培训会员

    积分
    441
    来自: 中国重庆
    发表于 2024-3-2 10:10:46 | 显示全部楼层 来自: 中国重庆
    [AAuto] 纯文本查看 复制代码
    //父子窗口两种模式
    import win.ui;
    /*DSG{{*/
    var winform = win.form(text="aardio form";right=759;bottom=469)
    winform.add()
    /*}}*/
    
    //父子窗口模式一:界面与业务逻辑混合
    var childFormCode = /***
    import win.ui;
    /*DSG{{*/
    var winform = win.form(text="子窗口1";right=759;bottom=469)
    winform.add(
    button={cls="button";text="Button";left=128;top=226;right=219;bottom=254;z=1}
    )
    /*}}*/
    
    winform.button.oncommand = function(id,event){
            winform.msgbox("子窗口");
    }
    
    winform.show()
    win.loopMessage();
    ***/
    var child_winform = winform.loadForm(childFormCode,winform /*指定父窗口*/ );
    
    
    //父子窗口模式二:界面与业务逻辑分离
    var childFormCode = /***
    import win.ui;
    /*DSG{{*/
    var winform = win.form(text="子窗口2";right=759;bottom=469)
    winform.add(
    button={cls="button";text="Button";left=128;top=226;right=219;bottom=254;z=1}
    )
    /*}}*/
    
    winform.show()
    win.loopMessage();
    ***/
    var child_winform = winform.loadForm(childFormCode,winform /*指定父窗口*/ );
    child_winform.button.oncommand = function(id,event){
            child_winform.msgbox("子窗口");
    }
    
    winform.show();
    win.loopMessage();

    回复

    使用道具 举报

    *滑块验证:
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Archiver|手机版|小黑屋|非业余 - aardio 编程语言 - 非官方问答社区

    GMT+8, 2024-7-16 10:24 , Processed in 0.183656 second(s), 30 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表