全键盘操作遍历树-创新互联

今天spy一棵树对象(TVirtualStringTree),发现spy出来的都是一些基本的属性和方法,树本身的属性和方法都没有(原因可能是这个树控件被自定义封装或属于非标准的第三方控件),面对这样的一个对象要展开和遍历,只能通过键盘的上[Up],下[Down],左[Left],右[Right]等箭头去操作了。

创新互联建站主营刚察网站建设的网络公司,主营网站建设方案,app软件开发公司,刚察h5小程序制作搭建,刚察网站营销推广欢迎刚察等地区企业咨询

思路:将树的层次和节点序号,组合成一个字符串,中间用“-”分割,例如:“6-2-1”,表示第1层的第6个节点展开后,进入第2层的第2个节点展开后,再进入第3层的第1个节点……定义个数组存放split后的节点数(顺序代表层次),然后就用getNumString函数去生成对应数量的操作键就行了。

js代码:

//Description   : goto and expand the specified node
//Parameter     : [IN]objTree -- the object Tree
//Parameter     : [IN]strLevels -- the level of node,split by "-",such as 6-2-1
//Return        : null
//Author        : Alan

function gotoAndExpandNode(objTree,strLevels){
    var levels = arguments[1] == undefined || strLevels=="" ? 0 : strLevels;//deal with null and ""
    var arrLevels = new Array();
    if(levels.indexOf("-")!= -1){
        arrLevels = levels.split("-");
        for(i=0; i<arrLevels.length; i++){
            arrLevels[i] = parseInt(arrLevels[i]);//transfer to integer
        }
    }
    else{
        arrLevels[0] = parseInt(levels);
    }
    var counter = 0;
    for(i=0; i<arrLevels.length; i++){
        var intPos = objTree.VScroll.Pos;
        if(i == 0 & arrLevels[0] == 0){
            objTree.Keys("[Home]");//root node
        }
        else{
            objTree.Keys(getNumString("[Down]",arrLevels[i]));//go to specified node
            Log.Message("Go to the node: level: "+(i+1)+" ,position: "+arrLevels[i]);
            if(i==arrLevels.length-1) break;//last node exit loop
            objTree.Keys("[Right]");//expanding node
            objTree.Refresh();
            while(objTree.VScroll.Pos <= intPos + 1){
                Delay(1000);
                objTree.Refresh();
                if(counter>20) break;//timeout exit loop
                counter++;
            }
            
        }
    }
}

当前名称:全键盘操作遍历树-创新互联
本文网址:https://www.cdcxhl.com/article46/ppjhg.html

成都网站建设公司_创新互联,为您提供Google云服务器定制网站全网营销推广网站内链网站收录

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

搜索引擎优化