控件灰化不立即生效,是什么原因?

已解决  已打赏  
学习 学习  悬赏: 5 金币
发布:2017-10-16 08:51:17 分类:问答
import win.ui;

/*DSG{{*/
mainForm = win.form(text="父窗口";right=759;bottom=469)
mainForm.add(
button={cls="button";text="button";left=147;top=320;right=293;bottom=363;z=1};
button2={cls="button";text="button2";left=386;top=312;right=544;bottom=363;z=2};
listview={cls="listview";left=192;top=104;right=476;bottom=246;edge=1;z=3}
)
/*}}*/

mainForm.button2.oncommand = function(id,event){
    //mainForm.msgbox( mainForm.button2.text );

    mainForm.button.disabled = true
    mainForm.listview.disabled = true
    sleep(2000)
    mainForm.button.disabled = false
    mainForm.listview.disabled = false
}

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

  • Admin Admin    
    Time:2017-10-16 08:55:57
    mainForm.button.disabled = 1
    mainForm.listview.disabled = 1

    win.delay(2000)

    mainForm.button.disabled = 0
    mainForm.listview.disabled = 0
    sleep是CPU睡眠了,win.delay()是用CPU时钟到某个时间再执行,有区别的吧?
    设计视图里把控件设置为禁用,再切换到代码视图,发现禁用的值应该是数字
  • 学习 学习    
    Time:2017-10-16 09:10:49
    感谢指教!

    我的本意不是sleep的问题,是禁用后执行一段时间的操作,然后恢复,但在执行操作的过程中,没有灰化,比如下面这样
        mainForm.button.disabled = true
    mainForm.listview.disabled = true

    http = inet.whttp()
    for(i=1;100000;1){
    http.get("http//www.sina.com")
    }

    mainForm.button.disabled = false
    mainForm.listview.disabled = false
    这是什么原因呢?该怎么做才能在执行禁用语句后立即生效?
  • Admin Admin    
    Time:2017-10-16 09:36:55
    disabled = true 改为 disabled = 1

    disabled = false 改为 disabled = 0

    sleep(2000) 改为 win.delay(2000)
  • Jacen.He Jacen.He    被采纳
    Time:2017-10-16 09:47:09
    http = inet.whttp()
    for(i=1;100000;1){
    http.get("http//www.sina.com")
    }
    你后面写的这段代码,跟sleep函数是一样的,都会让界面失去响应(让界面消息循环停止,也就是win.loopMessage函数被暂停 ),所以你看不到灰化。

    耗时的代码放到多线程里就不会有这些问题,或者你可以调用 mainForm.listview.redraw(); 立即重绘就可以。

    Admin 说的 disabled = true 改为  disabled = 1 这个是错的,1和true是等价的布尔值,设计器里写成1是为了生成的代码尽可能的短(因为这个代码一般是给设计器看的),平时不用这样写(因为是给自己看的,写true更容易理解)。
  • 学习 学习    
    Time:2017-10-16 09:47:09
    大神,我这里效果一样啊,是我系统的原因吗
        mainForm.button.disabled = 1
    mainForm.listview.disabled = 1
    http = inet.whttp()
    for(i=1;100000;1){
    http.get("http//www.sina.com")
    }
    mainForm.button.disabled = 0
    mainForm.listview.disabled = 0
  • Jacen.He Jacen.He    
    Time:2017-10-16 09:53:15
    正确的加个后台线程,这样写:
    import win.ui;
    /*DSG{{*/
    mainForm = win.form(text="父窗口";right=759;bottom=469)
    mainForm.add(
    button={cls="button";text="button";left=147;top=320;right=293;bottom=363;z=1};
    button2={cls="button";text="button2";left=386;top=312;right=544;bottom=363;z=2};
    listview={cls="listview";left=192;top=104;right=476;bottom=246;edge=1;z=3}
    )
    /*}}*/

    mainForm.listview.threadCallable();
    mainForm.listview.insertColumn("test",300);
    mainForm.button2.oncommand = function(id,event){

    mainForm.button.disabled = true
    mainForm.listview.disabled = true

    win.invoke(
    function(mainForm,url){
    import inet.http;
    var http = inet.http()
    for(i=1;100;1){
    var str = http.get(url)
    mainForm.listview.addItem( string.left(str,10) )
    }
    } ,mainForm,"http://www.sina.com"
    )

    mainForm.button.disabled = false
    mainForm.listview.disabled = false
    }

    mainForm.show()
    return win.loopMessage();
  • Jacen.He Jacen.He    
    Time:2017-10-16 09:54:07
    或者这样写:
    import win.ui;
    /*DSG{{*/
    mainForm = win.form(text="父窗口";right=759;bottom=469)
    mainForm.add(
    button={cls="button";text="button";left=147;top=320;right=293;bottom=363;z=1};
    button2={cls="button";text="button2";left=386;top=312;right=544;bottom=363;z=2};
    listview={cls="listview";left=192;top=104;right=476;bottom=246;edge=1;z=3}
    )
    /*}}*/

    mainForm.button2.oncommand = function(id,event){
    mainForm.button.disabled = true
    mainForm.listview.disabled = true
    mainForm.redraw();

    sleep(2000)
    mainForm.button.disabled = false
    mainForm.listview.disabled = false
    }

    mainForm.show()
    return win.loopMessage();
  • 学习 学习    
    Time:2017-10-16 09:54:49
    Jacen.He,非常感谢!

    mainForm.listview.redraw() 生效

    但 mainForm.button.redraw() 无效,这是为什么呢
  • 学习 学习    
    Time:2017-10-16 09:56:10
    我这里 mainForm.redraw() 对button也不起作用,是不是我系统或环境的问题
  • 学习 学习    
    Time:2017-10-16 09:57:59
    后台线程有效,已学习,非常感谢!
  • Jacen.He Jacen.He    
    Time:2017-10-16 09:58:16
    你在后面加一个 win.delay(100)
  • 学习 学习    
    Time:2017-10-16 10:03:36
    这下成了,这是什么原因呢
[ 发单/接单 ]
换IP投票软件
PC蛋蛋自动挂机投注
新浪微博发微博显示尾巴的方法,比如显示来自iphone 7
百度文库批量自动上传软件
一点资讯app刷阅读量/评论/收藏/订阅功能/手机号注册
定做一个阿迪达斯官网注册器(需要破点击文字式验证码)
定制人人网自动注册/修改资料/采集/私聊软件
酷狗繁星直播网页协yi
YY多功能刷订阅刷粉丝
滑块验证码本地识别
狼人杀POST QQ登录注册 获取金币数量
做个贴吧发发帖的软件懂的来
今日头条账号保存cookie
抖音粉丝软件定做,只要粉丝
百家号自媒体发文软件定制
哔哩哔哩播放量
读取TB某个商品上架时间和相关信息
网易博客软件定制
定制天涯论坛发帖软件
定制今日头条批量自动发私信软件
[ 站内搜索 ]
[ 最近热帖 ]
万能助手 -- 扩展库大全集 13904
用aardio创建web工程图文讲解(1) 13043
电脑编程入门自学:Fiddler https 抓包时提示创建根证书不成功问题彻底解决(https插件dll方式) 11879
aardio绘图演示 11550
通过chrome.dll中间件控制外部chrome浏览器 10282
我常用的aardio技巧 9910
《边学C语言边赚钱——简码编程入门教程》系列集合 9727
aardio使用http或whttp进行get/post请求时经常cookies失效怎么办?__电脑计算机编程入门教程自学 9442
[源码下载]简码视频加密解密播放工具个人版v1.0发布,永久免费开源的知识变现神器 8668
python人工智能爬虫系列:怎么查看python版本_电脑计算机编程入门教程自学 8161
编程入门教程:aardio批量上传文件并显示进度条 8055
aardio调用nodejs的ws模块做一个简单的聊天通信示例 7194
电脑计算机编程入门教程自学:原生JavaScript判断字符是否为A-Za-z英文字母 6997
电脑计算机编程入门教程自学:腾讯tx或极验geetest滑块按住拖动完成拼图验证成功破解思路及源码 6607
乐玩插件AARDIO调用 6229
[ 近期热答 ]
电脑计算机编程入门教程自学:什么是buffer缓冲区? 1
aardio_代码编辑框书签管理器开源 1
aardio_怎么用ide库从代码编辑框中取出指定行的源码? 1
aardio_codepage代码页编码乱码暴力猜解工具 1
aardio内嵌echarts图表添加鼠标事件响应功能 2
aardio列表框listbox_模糊查找和精确查找 1
8亿QQ绑定手机泄露:通过腾讯QQ号查询QQ绑定的手机号码漏洞! 1
carl listviewex调用例子----------源码搬运工 2
Aardio内嵌Electron浏览框怎么正确添加启动参数? 1
Aardio取汉字的字节数或字符数 1
怎么实现mssql图片数据的读写 2
aardio_从49个数字里选六个和值为150的不重复的数字 1
在嵌入wps的时候,多了一个 透明的边框,这个怎么消除它 1
万能助手入门帮助教程:学会科学地管理工作文件 1
Aaardio开发内嵌Electron浏览框放服务器上无法下载组件的解决办法 1