線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1431
推到 Plurk!
推到 Facebook!

如何檢查TREE VIEW的NODE是否已存在??

尚未結案
賽賽男
一般會員


發表:1
回覆:3
積分:0
註冊:2004-07-22

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-08-07 00:41:12 IP:210.61.xxx.xxx 未訂閱
TreeView1->Items->Add(NULL, "AAA"); TreeView1->Items->Add(pItems->Item[0], "BBB"); TreeView1->Items->Add(pItems->Item[1], "CCC"); TreeView1->Items->AddChild(pItems->Item[0], "A1"); TreeView1->Items->AddChild(pItems->Item[0], "A2"); TreeView1->Items->AddChild(pItems->Item[0], "A3"); 接者我想判斷新增NODE時能檢查是否該NODE已經存在TREE VIEW中,根據該NODE的TEXT來判斷,如下: TreeView1->Items->Item[i]->Text.AnsiCompare(NodeList1->Strings[i]) 另外每新增一個PARENT NODE我就讓TreeView1->Tag 1,來取得回圈數 可是如果照先前的NODE加入後,該TEXT的內容卻變成 TreeView1->Items->Item[0]->Text = "AAA"; TreeView1->Items->Item[1]->Text = "A1"; TreeView1->Items->Item[2]->Text = "A2"; TreeView1->Items->Item[3]->Text = "A3"; 導致我無法判斷PARENT NODE是否存在了, 請問怎麼會這樣咧?要如何解才好?請各位大大幫幫我吧@@ ^O^y
------
^O^y
賽賽男
一般會員


發表:1
回覆:3
積分:0
註冊:2004-07-22

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-08-08 00:15:08 IP:210.61.xxx.xxx 未訂閱
有沒有大大可以幫幫我啊?? 是不是我問的問題太笨了>< ^O^y
------
^O^y
richtop
資深會員


發表:122
回覆:646
積分:468
註冊:2003-06-10

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-08-08 17:07:25 IP:211.76.xxx.xxx 未訂閱
賽賽男 您好:    您的問題一點也不笨,而且還有點難! > 程式如下,提供參考。 <>< class="code">//--------------------------------------------------------------------------- int totalChildren(TTreeNodes *nodes, int index) { int total=1; if ( nodes->Item[index]->Count == 0 ) return 1; // no child. for (int k=1; k<=nodes->Item[index]->Count; k ) { total = totalChildren(nodes, index k); } return total; } void __fastcall TForm1::Button1Click(TObject *Sender) { TTreeNodes* pItems ; pItems = TreeView1->Items; TreeView1->Items->Add(NULL, "AAA"); TreeView1->Items->Add(pItems->Item[0], "BBB"); TreeView1->Items->Add(pItems->Item[1], "CCC"); TreeView1->Items->AddChild(pItems->Item[0], "A1"); TreeView1->Items->AddChild(pItems->Item[1], "A11"); //故意加入的 TreeView1->Items->AddChild(pItems->Item[0], "A2"); TreeView1->Items->AddChild(pItems->Item[0], "A3"); if ( TreeView1->Items->Count==0 ) return; int index = 0; while ( index < pItems->Count ) { ListBox1->Items->Add( pItems->Item[index]->Text); if ( pItems->Item[index]->Count != 0 ) { index = totalChildren(pItems,index); // 跳過所有的子孫"們"。 } else index ; } } //--------------------------------------------------------------------------- RichTop 敬上 =====***** 把數學當工具,可以解決問題;將數學變能力,能夠發現並解決問題! =====#####
賽賽男
一般會員


發表:1
回覆:3
積分:0
註冊:2004-07-22

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-08-09 08:55:54 IP:220.130.xxx.xxx 未訂閱
那再請問一下RichTop大大,如果照您說的: TTreeView會將新加入的節點,依其所加的位置填入Item陣列中,就是利用串列(list)的方式處理加入的點。 那TTreeView是不是就沒有其他的屬性或方法可以直接取得 ROOT NODE的個數跟文字了呢??? ^O^y
------
^O^y
bass15
高階會員


發表:24
回覆:171
積分:119
註冊:2003-10-27

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-08-09 09:51:11 IP:219.84.xxx.xxx 未訂閱
TTreeNode *Item0 = TreeView1->Items->Item[0]; TTreeNode *ParentOfItem0 = Item0->Parent; 然後判斷ParentOfItem0有沒有值就知道他有沒有父節點... ShowMessage(Item0->Level); Level=0時表示他是第一層Root Level=1時表示他是第二層 所以寫一個迴圈去判斷每個節點的Level就知道有幾個Root了.
賽賽男
一般會員


發表:1
回覆:3
積分:0
註冊:2004-07-22

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-08-09 11:12:31 IP:220.130.xxx.xxx 未訂閱
真是非常謝謝兩位大大的指導^^ ^O^y
------
^O^y
richtop
資深會員


發表:122
回覆:646
積分:468
註冊:2003-06-10

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-08-09 18:21:56 IP:211.76.xxx.xxx 未訂閱
bass15 您好:    感謝您的說明,原來有Level屬性可用,真是太好了!< > 看來得好好的看一下 > 另外,對賽賽男有點不好意思,好像把問題弄遠了。< > 不過真要感謝賽賽男與 > RichTop 敬上 =====***** 把數學當工具,可以解決問題;將數學變能力,能夠發現並解決問題! =====#####
系統時間:2024-11-22 17:15:43
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!