如何判斷TREEVIEW的某一層的父節點皆不能拖曳 |
尚未結案
|
qq_911228
一般會員 發表:30 回覆:22 積分:10 註冊:2003-09-29 發送簡訊給我 |
|
ccchen
版主 發表:61 回覆:940 積分:1394 註冊:2002-04-15 發送簡訊給我 |
可以在ListBox之onDragOver, 判斷所選節點是否可接受, 若不接受將Accept:=False
例:
procedure TForm1.ListBox1DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean); begin if Source is TTreeview then begin //此處之條件應看你需求, level=0 表示最上層之node if TTreeview(Source).selected.level=0 then Accept:=False else Accept:=True; end; end; |
Mickey
版主 發表:77 回覆:1882 積分:1390 註冊:2002-12-11 發送簡訊給我 |
|
qq_911228
一般會員 發表:30 回覆:22 積分:10 註冊:2003-09-29 發送簡訊給我 |
|
qq_911228
一般會員 發表:30 回覆:22 積分:10 註冊:2003-09-29 發送簡訊給我 |
引言: qq_911228 你好: 如果你是希望, 有子節點的 TTreeNode 都不能 DragDrop 的話 :很謝謝你~~~ 這個問題已解決,但我又發現一個問題, 就是如果你多選時,選了A1'A2且也將A給選進去,結果A還是可以被拖曳, 請問一下,要在那個event或是properity去寫code擋掉。 謝謝。if Source is TTreeview then Accept := not TTreeview(Source).selected.HasChildren; |
Mickey
版主 發表:77 回覆:1882 積分:1390 註冊:2002-12-11 發送簡訊給我 |
|
qq_911228
一般會員 發表:30 回覆:22 積分:10 註冊:2003-09-29 發送簡訊給我 |
引言:不好意思~ 再請問您~~ 如果拖曳到LISTBOX的節點,可以知道他的父節點是什麼嘛? 譬如說 :從TREEVIEW中拖曳LISTBOX的A1,因為到時候須作運算,要用到A1的父節點A,請問要在那加CODE~~謝謝。var i : integer; begin Accept := (Source<>nil) and (Source is TTreeView); if Accept then for i := 0 to TTreeView(Source).SelectionCount-1 do if TTreeView(Source).Selections[i].HasChildren then Accept := False ; end; |
Mickey
版主 發表:77 回覆:1882 積分:1390 註冊:2002-12-11 發送簡訊給我 |
|
qq_911228
一般會員 發表:30 回覆:22 積分:10 註冊:2003-09-29 發送簡訊給我 |
謝謝。
但我的help寫的只有如下
SelNode := TTreeView1.Selected;
ParentNode := SelNode.Parent;
HasSibling := (ParentNode.GetPrevChild(SelNode) <> nil) or
(ParentNode.GetNextChild(SelNode) <> nil);
所以我不知道要如何利用之前的itemid去作,
因為如果用
Node := treeview1.Items.GetNode(HTreeItem(listbox3.Items.Objects[j])).parent,
則treeview1則會多增加一個node,所以不好意思再麻煩你了。
|
Mickey
版主 發表:77 回覆:1882 積分:1390 註冊:2002-12-11 發送簡訊給我 |
|
zzmbeyond01
中階會員 發表:98 回覆:167 積分:53 註冊:2003-09-07 發送簡訊給我 |
我想问一下,为什么我得程序没有执行呢?
谢谢!
procedure TForm1.Frame2TreeView1DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean); begin if source is TTreeview then accept := not TTreeview(source).Selected.HasChildren; end; procedure TForm1.ListBox1DragDrop(Sender, Source: TObject; X, Y: Integer); begin if Source is TTreeview then with sender as TListBox do Items.Add(TTreeview(Source).Selected.Text); end; |
qq_911228
一般會員 發表:30 回覆:22 積分:10 註冊:2003-09-29 發送簡訊給我 |
引言: 我想问一下,为什么我得程序没有执行呢? 谢谢!不知道你的multiselected的properity是否有設為true!procedure TForm1.Frame2TreeView1DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean); begin if source is TTreeview then accept := not TTreeview(source).Selected.HasChildren; end; procedure TForm1.ListBox1DragDrop(Sender, Source: TObject; X, Y: Integer); begin if Source is TTreeview then with sender as TListBox do Items.Add(TTreeview(Source).Selected.Text); end; |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |