aardio 官方社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 14992|回复: 1

请教有关win.invoke的问题

[复制链接]

1

主题

5

回帖

36

积分

新手入门

积分
36
发表于 2013-2-8 08:53:31 | 显示全部楼层 |阅读模式
本帖最后由 夜幕舞者 于 2013-2-8 08:56 编辑

winform.button.oncommand = function(id,event){
        var 网页源码=win.invoke(
                function(){
                        import mytools;
                        /*执行耗时函数、并正常处理窗口消息*/
                        网页地址="http://www.baidu.com";
                        var 网页地址=mytools.getUrl();
                        return mytools.getHtml(网页地址); //此处如果网页地址是获取文本框的值的话,就会出错,但是如果是直接把“http://www.baidu.com"值赋给它就能正常运行,百思不得其解
                }
        )
        winform.richedit.text=网页源码;
}

另外
import inet.http;
import win;
import win.ui;
namespace mytools{
        getHtml=function(网页地址){
                var http =..inet.http() ;
                var 网页源码=http.get(网页地址);
                return 网页源码;
        }
        getUrl=function(){
                var 网址=..winform.edit.text;
                return 网址 ;
        }
}
这是自定义的库,但是在外部引用mytools.getUrl()总是出错,不知该如何获取文本框的值,同时这个winform能不能用变量代替,以便多个不同窗体调用

4

主题

852

回帖

4689

积分

荣誉会员

积分
4689
发表于 2013-2-8 13:06:17 | 显示全部楼层
  1. import win.ui;
  2. /*DSG{{*/
  3. var winform = ..win.form( max=false;right=600;bottom=400;parent=...;text="抓取网页";border="dialog frame" )
  4. winform.add(
  5. editUrl={ right=554;bottom=56;text="http://www.baidu.com";left=44;multiline=1;top=31;z=3;edge=1;cls="edit" };
  6. btnGet={ bottom=383;text="抓取";left=277;top=329;z=1;right=519;cls="button" };
  7. richedit={ bottom=310;right=554;left=44;multiline=1;top=108;z=2;edge=1;cls="richedit" }
  8. )
  9. /*}}*/

  10. winform.btnGet.oncommand = function(id,event){

  11.     var 网页源码=win.invoke(
  12.         function( url ){
  13.                         import inet.http;
  14.                         namespace mytools{
  15.                             getHtml=function(网页地址){
  16.                                     var http =..inet.http() ;
  17.                                     var 网页源码=http.get(网页地址);
  18.                                     return 网页源码;
  19.                             }
  20.                         }
  21.               
  22.              return mytools.getHtml(url);
  23.         },winform.editUrl.text
  24.         )
  25.     winform.richedit.text=网页源码;
  26. }


  27. winform.show();
  28. win.loopMessage();
复制代码
数据应当一个入口一个出口,外部对象应当使用函数参数传递,
winform是一个局部变量,不应跨文件访问,UI线程的UI对象不应当直接传入其他线程使用,应当将控件句柄作为创建线程的参数传入线程,通过句柄跨线程控制控件。在你的这个程序里应当先取值作为参数传入,不要把简单的事搞复杂。

评分

参与人数 1 +35 收起 理由
满月星光 + 35 学到了不少知识。。

查看全部评分

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

本版积分规则

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

GMT+8, 2025-2-17 20:22 , Processed in 0.071276 second(s), 23 queries .

Powered by Discuz! X3.5

Copyright © 2001-2024 Tencent Cloud.

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