aardio 官方社区

用户名  找回密码
 注册会员

QQ登录

只需一步,快速开始

帖子
查看: 10027|回复: 4

子窗口的问题,求助!

[复制链接]

8

主题

23

回帖

301

积分

二级会员

积分
301
发表于 2014-9-15 11:01:39 | 显示全部楼层 |阅读模式
非常感谢这个软件,太精彩,新手,正在学习中!测试了多线程下载多个文件的代码,现在有一疑问一直没有弄明白,先上代码:

父窗口有操作子窗口代码,先枚举子窗口(下载管理器)是否打开,如果打开,增加下载url,问题来了,本意是操作子窗口的,结果每操作一次,就开个新窗口,不知道问题出在哪里?本人不才,求指点迷津。

   
        hwnd=console.getWindow()
         winex.enum(
        function(hwnd,depth){
               
               
                if(winex.getText(hwnd)=="下载管理器)
                {
                     win.msgbox("找到了")
                        childForm.adddownfile(url);
                        return false
                }else {

                var childForm = winform.loadForm("\res\download.aardio", );
                   childForm.show();
                return false
                }
                N =N +1
        }
        ,
        ,要查找的类名
        ,要查找的标题
        ,要查找的控件ID
)
       

================子窗口

winform.adddownfile = function(str){   
          win.msgbox(str,"aardio");
    dlmgr.push(
        id = winform.listview.addItem(str);
        url =str;
        savedir = "/downlaod/";
            )

}       

5

主题

429

回帖

2420

积分

五级会员

积分
2420
发表于 2014-9-15 13:40:41 | 显示全部楼层
你为什么要多次加载窗体呢? 加载多次当然是多个窗体了。
这跟生孩子一样,父窗体生子窗体,只要生一次就够了,然后你保存到一个变量里就行了。
其实你上面的一堆代码,换成下面这一句代码就可以了:
var frmDownloader = mainForm.loadForm( downloadCode )

然后你在主窗体里直接使用 frmDownloader 这个变量就可以了,不需要再用 winex 去查找。
自己程序里的窗体是用不到winex这个库的,winex主要操作外部程序窗体。
完整示例代码:
import win.ui;
/*DSG{{*/
var mainForm = win.form(text="主窗体";right=599;bottom=399)
mainForm.add()
/*}}*/

var downloadCode = /****
    import win.ui;
    var winform = win.form(cls="DOWN_FORM";text="下载管理器";left=-2;right=494;bottom=337;parent=...)
    winform.add(
    edit={cls="edit";left=21;top=19;right=476;bottom=321;edge=1;multiline=1;z=1}
    )
   
    winform.download = function( path ){
        winform.edit.print("正在下载",path);
    }
   
    winform.show();
   
****/

var frmDownloader = mainForm.loadForm( downloadCode );
frmDownloader.download(
"下载地址1" );
frmDownloader.download(
"下载地址2" );

mainForm.show();
win.loopMessage();




评分

参与人数 2 +15 收起 理由
redasurc + 5 赞一个!
handongcn + 10 很给力!

查看全部评分

8

主题

23

回帖

301

积分

二级会员

积分
301
 楼主| 发表于 2014-9-15 14:54:41 | 显示全部楼层
非常感激,才发现aardio几天,所以很多用法不清楚,看了您的回答才觉得佩服!期间也一直看帮助,也找到笨笨的解决办法,随便也贴上来,大家笑笑也罢。
             var hwnd = win.find(,"下载管理器");                     
            if( hwnd=0) {            
                 childForm = mainForm.loadForm("\res\download.aardio",mainForm /*指定父窗口*/ );
                          childForm.show();                    
                 childForm.adddownfile(url);           
            }
            else {            
                 childForm.show();  
                 childForm.adddownfile(url);           

            }
还有点疑问,如果子窗口内容涉及很多,比如多线程,多控件,函数等,如果写成变量方式var downloadCode 是不都应该写进去?

5

主题

429

回帖

2420

积分

五级会员

积分
2420
发表于 2014-9-15 16:10:41 | 显示全部楼层
bjtv 发表于 2014-9-15 14:54
非常感激,才发现aardio几天,所以很多用法不清楚,看了您的回答才觉得佩服!期间也一直看帮助,也找到笨笨的 ...

查找窗口的函数是用来查找未知标识的窗口句柄,你自己创建的已知的窗口对象不需要再去通过窗口标题查找。不同的窗口是可能有相同标题的。

上面的downloadCode里写子窗口的代码,只是方便你直接复制运行示例,不是说要把你的全部代码放到这个变量里,你换成加载代码文件就可以。

0

主题

9

回帖

65

积分

一级会员

积分
65
发表于 2014-10-16 13:13:03 | 显示全部楼层
学习中,不断找前辈的例子来观摩!!

评分

参与人数 1 +1 收起 理由
redasurc + 1 很给力!

查看全部评分

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

手机版|未经许可严禁引用或转载本站文章|aardio.com|aardio 官方社区 ( 皖ICP备09012014号 )

GMT+8, 2025-6-6 23:04 , Processed in 0.065507 second(s), 23 queries .

Powered by Discuz! X3.5

Copyright © 2001-2024 Tencent Cloud.

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