今天spy一棵樹對象(TVirtualStringTree),發(fā)現(xiàn)spy出來的都是一些基本的屬性和方法,樹本身的屬性和方法都沒有(原因可能是這個樹控件被自定義封裝或?qū)儆诜菢藴实牡谌娇丶鎸@樣的一個對象要展開和遍歷,只能通過鍵盤的上[Up],下[Down],左[Left],右[Right]等箭頭去操作了。

思路:將樹的層次和節(jié)點序號,組合成一個字符串,中間用“-”分割,例如:“6-2-1”,表示第1層的第6個節(jié)點展開后,進入第2層的第2個節(jié)點展開后,再進入第3層的第1個節(jié)點……定義個數(shù)組存放split后的節(jié)點數(shù)(順序代表層次),然后就用getNumString函數(shù)去生成對應(yīng)數(shù)量的操作鍵就行了。
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++;
}
}
}
}
當(dāng)前名稱:全鍵盤操作遍歷樹-創(chuàng)新互聯(lián)
本文網(wǎng)址:http://www.yijiale78.com/article46/ppjhg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、云服務(wù)器、定制網(wǎng)站、全網(wǎng)營銷推廣、網(wǎng)站內(nèi)鏈、網(wǎng)站收錄
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容