如何得知我拖曳到TreeView上的那一個項目呢? |
答題得分者是:ha0009
|
lcc1299
一般會員 發表:39 回覆:42 積分:21 註冊:2004-09-12 發送簡訊給我 |
各位大大請問一下:
如果我在一個TreeView上建立了三個父選項,並給他stateindex分別為1、2、3,然後我在一個listbox拉一串字過去,並且在TreeView上的三個父選項上其中一個放下(Drop),要怎樣才能得到,我是在那一個父選項上放下的嗎?就是他會show出,放下的那個的stateindex。 ps:我測試的結果會發生,我mouse先在treeview上的父項1點一下,然後拉過去後,會得到stateindex為1的結果,但如果我拉過去放開的是在第3個父項,還是會得到1的結果,因為他認為我mouse一開始點的是1那個位置,所以我怎麼拉都會顯示1。(因該是我邏輯上的問題:TreeView1.Selected.StateIndex),因為我在treeview上的焦點是父項1,所以都會傳回1,但有什麼方法,可以得到我上面那個問題的答案嗎?~~~~謝謝。
|
ha0009
版主 發表:16 回覆:507 積分:639 註冊:2002-03-16 發送簡訊給我 |
你好: 將下列兩段程式設定給 TreeLiew 的 OnDragOver 與 OnDragDrop 既可,試試吧。 procedure TForm1.TreeView1DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean); var Node : TTreeNode; begin Node := TreeView1.GetNodeAt(x, y); Accept := Node <> nil; // 加上這段則一定要是 Root 才可以接受,如果要開放全部則註解既可 if Accept then Accept := Node.Parent = nil end; procedure TForm1.TreeView1DragDrop(Sender, Source: TObject; X, Y: Integer); begin TreeView1.Items.AddChild(TreeView1.GetNodeAt(x, y), (Source As TListBox).Items.Strings [(Source As TListBox).ItemIndex]) end; |
lcc1299
一般會員 發表:39 回覆:42 積分:21 註冊:2004-09-12 發送簡訊給我 |
|
ha0009
版主 發表:16 回覆:507 積分:639 註冊:2002-03-16 發送簡訊給我 |
|
lcc1299
一般會員 發表:39 回覆:42 積分:21 註冊:2004-09-12 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |