TreeView複製及貼上一問?? |
答題得分者是:senso
|
nokib2002
一般會員 發表:22 回覆:48 積分:14 註冊:2009-08-09 發送簡訊給我 |
請教各位大大
如何把TreeView中的子目錄,複製到另一結點,例如:把原先的B等子目錄,按復製後 可貼到C下變子目錄,如下圖,我有參考pireer前輩的文章,pireer也有分享程式,但是 前輩上傳的程式碼,已找不到了,請問有誰有留這方面的cord,或是能給我個解決方向, 謝謝線上各位大大 , root__ |__A |__B |__B1 |__B2 |__C 2. root__ |__A |__B |__B1 |__B2 |__C |__B |__B1 |__B2
------
努力往往是甘苦的!!一起勉勵 |
nokib2002
一般會員 發表:22 回覆:48 積分:14 註冊:2009-08-09 發送簡訊給我 |
|
senso
高階會員 發表:5 回覆:126 積分:226 註冊:2003-11-27 發送簡訊給我 |
|
nokib2002
一般會員 發表:22 回覆:48 積分:14 註冊:2009-08-09 發送簡訊給我 |
------
努力往往是甘苦的!!一起勉勵 |
senso
高階會員 發表:5 回覆:126 積分:226 註冊:2003-11-27 發送簡訊給我 |
好像都是自己寫function吧
下面我自己寫的,再測看看吧 [code cpp] void CopyNodes(TTreeNode *SrcNode,TTreeNodes *DestNode,bool child); //先存選取的節點,之後再複製子節點 void CopyNodes2(TTreeNode *SrcNode,TTreeNode *DestNode,bool child); //遞回複製Node //--------------------------------------------------------------------------- void TForm1::CopyNodes(TTreeNode *SrcNode,TTreeNodes *DestNodes,bool child) { //先存選取的節點,之後再複製子節點 TTreeNode *newNode; TTreeNode *DestNode = DestNodes->Owner->Selected; //因為treeview2是空的,若用DestNode->Owner取TTreeNodes會錯誤 if (child) newNode = DestNodes->AddChildObject(DestNode,SrcNode->Text,SrcNode->Data); //建立子節點 else newNode = DestNodes->AddObjectFirst(DestNode,SrcNode->Text,SrcNode->Data); //建立節點 if (SrcNode->getFirstChild()) //若選取的節點有子節點 CopyNodes2(SrcNode->getFirstChild(),newNode,true); } //--------------------------------------------------------------------------- void TForm1::CopyNodes2(TTreeNode *SrcNode,TTreeNode *DestNode,bool child) { TTreeNode *newNode; if (child) newNode = DestNode->Owner->AddChildObject(DestNode,SrcNode->Text,SrcNode->Data); //建立子節點 else newNode = DestNode->Owner->AddObject( DestNode,SrcNode->Text,SrcNode->Data); //建立節點 TTreeNode *ChildNode = SrcNode->getFirstChild(); //是否有子節點 TTreeNode *NextNode = SrcNode->GetNextChild(SrcNode); //是否節點 if (ChildNode) CopyNodes2(ChildNode,newNode,true); //複製子節點 if (NextNode) CopyNodes2(NextNode,newNode,false); //複製節點 } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) //複製 { TTreeNode *SrcNode = TreeView1->Selected; TTreeNodes *DestNodes = TreeView2->Items; DestNodes->Clear(); //若暫存有AddObject,應先將Data的Object delete CopyNodes(SrcNode,DestNodes,false); } //--------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) //貼上 { TTreeNode *SrcNode = TreeView2->Items->GetFirstNode(); TTreeNodes *DestNodes = TreeView1->Items; CopyNodes(SrcNode,DestNodes,true); TreeView1->SetFocus(); } //--------------------------------------------------------------------------- [/code] |
nokib2002
一般會員 發表:22 回覆:48 積分:14 註冊:2009-08-09 發送簡訊給我 |
------
努力往往是甘苦的!!一起勉勵 |
senso
高階會員 發表:5 回覆:126 積分:226 註冊:2003-11-27 發送簡訊給我 |
只要有一個treeview的話,就加一個全域TTreeNode 記要複製的節點
[code cpp] TTreeNode *tmpNode; void __fastcall TForm1::Button1Click(TObject *Sender) //複製 { tmpNode = TreeView1->Selected; } //--------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) //貼上 { TTreeNode *SrcNode = tmpNode; TTreeNodes *DestNodes = TreeView1->Items; CopyNodes(SrcNode,DestNodes,true); TreeView1->SetFocus(); } [/code]
編輯記錄
senso 重新編輯於 2011-02-09 00:14:43, 註解 無‧
|
nokib2002
一般會員 發表:22 回覆:48 積分:14 註冊:2009-08-09 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |