2個TreeView物件的相互對應? |
答題得分者是:jow
|
nlj859
資深會員 發表:139 回覆:375 積分:322 註冊:2004-03-20 發送簡訊給我 |
請問我有2個TreeView物件,其樹狀結構都完全一樣,如下所示
TreeView1 TreeView2 AA__ XX__ | |____A1 | |__X1 | |____A2 | |__X2 | | BB___ YY__ | |___ B1 | |__Y1 | |___B2 | |__Y2 | | CC___ ZZ__ |___C1 |__Z1 |___C2 |__Z2 目前我只由TreeView1去點選, 當我選到TreeView1的B2時, 我需要在Label1顯示Y1; 如果選到TreeView1的C1時, 我需要在Label1顯示Z1. 請問要程式要如何達到這種做法, 請指教,謝謝. |
jow
尊榮會員 發表:66 回覆:751 積分:1253 註冊:2002-03-13 發送簡訊給我 |
^_^.
[code delphi] procedure TForm1.tv1Change(Sender: TObject; Node: TTreeNode); function Find(TV: TTreeView; NODE: TTreeNode; var Index: Integer): Boolean; var I: Integer; begin Index := -1; for I := 0 to TV.Items.Count-1 do if TV.Items[I] = NODE then begin Index := I; Break; end; Result := Index <> -1; end; var Index: Integer; begin if Find(tv1, Node, Index) and (Index < tv2.Items.Count) then Label1.Caption := tv2.Items[Index].Text; end; [/code] |
Stallion
版主 發表:52 回覆:1600 積分:1995 註冊:2004-09-15 發送簡訊給我 |
|
nlj859
資深會員 發表:139 回覆:375 積分:322 註冊:2004-03-20 發送簡訊給我 |
試過之後無法於Label上顯示,請問可以幫忙看一下程式碼嗎?
感謝. [code cpp] bool __fastcall TForm1::Find(TTreeView *TV, TTreeNode* tNode, int Index) { int i; Index=-1; for (i=0;TV->Items->Count-1;i ) { if (TV->Selections[i]==tNode) { Index=i; break; } } return (Index!= -1); } void __fastcall TForm1::tv1Change(TObject *Sender, TTreeNode *Node) { int Index; if (Find(tv1,Node,Index) && Index Label1->Caption=tv2->Items->Item[Index]->Text; }
編輯記錄
nlj859 重新編輯於 2007-11-10 08:06:39, 註解 無‧
|
Stallion
版主 發表:52 回覆:1600 積分:1995 註冊:2004-09-15 發送簡訊給我 |
[code cpp]
bool __fastcall TForm1::Find(TTreeView *TV, TTreeNode* tNode, int Index) { int i; Index=-1; for (i=0;TV->Items->Count-1;i ) { if (TV->Selections[i]==tNode) { Index=i; break; } } return ( Index != -1 ); } [/code] |
jow
尊榮會員 發表:66 回覆:751 積分:1253 註冊:2002-03-13 發送簡訊給我 |
Index的值需回傳:
(1)bool __fastcall TForm1::Find(TTreeView *TV, TTreeNode *tNode, int *Index) (2)if(Find(tv1,Node,&Index) && Index < tv2->Items->Count) [code cpp] //--------------------------------------------------------------------------- bool __fastcall TForm1::Find(TTreeView *TV, TTreeNode *tNode, int *Index) { *Index=-1; for(int i=0;i if (TV->Items->Item[i]==tNode){ *Index=i; break; } return *Index!=-1; } //--------------------------------------------------------------------------- void __fastcall TForm1::tv1Change(TObject *Sender, TTreeNode *Node) { int Index; if(Find(tv1,Node,&Index)&&Index Label1->Caption=tv2->Items->Item[Index]->Text; } //--------------------------------------------------------------------------- [/code] |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |