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

有關TREEVIEW的子項目移動後的復元

答題得分者是:Mickey
qq_911228
一般會員


發表:30
回覆:22
積分:10
註冊:2003-09-29

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-11-25 16:38:28 IP:218.164.xxx.xxx 未訂閱
Mickey
版主


發表:77
回覆:1882
積分:1390
註冊:2002-12-11

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-11-25 20:56:18 IP:218.32.xxx.xxx 未訂閱
qq_911228 你好:    不知有沒有誤會你的意思, 你是要 ListBox DragAndDrop To TreeView 時,    "自動歸回原位" 是嗎 ?    Sample Code 如下 :
procedure TForm1.TreeView1DragDrop(Sender, Source: TObject; X, Y: Integer);
var
  Node : TTreeNode;
begin
  Node := TreeView1.Items.GetNode(HTreeItem(ListBox1.Items.Objects[ListBox1.ItemIndex]));
  if Node<>nil then Node.Text := ListBox1.Items[ListBox1.ItemIndex];
end;    procedure TForm1.ListBox1DragDrop(Sender, Source: TObject; X, Y: Integer);
begin
// 記住原來的 TTreeNode.ItemID
  ListBox1.AddItem(TreeView1.Selected.Text,TObject(TreeView1.Selected.ItemID));
  TreeView1.Selected.Text := '(Empty)';
end;    
qq_911228
一般會員


發表:30
回覆:22
積分:10
註冊:2003-09-29

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-11-25 22:49:05 IP:218.164.xxx.xxx 未訂閱
謝謝~~ 我要的就是這樣~~ 但我去執行時,紅色的部份被指出是錯誤, 不知道有再需要修改什麼嘛?    
引言: qq_911228 你好: 不知有沒有誤會你的意思, 你是要 ListBox DragAndDrop To TreeView 時, "自動歸回原位" 是嗎 ? Sample Code 如下 :
procedure TForm1.TreeView1DragDrop(Sender, Source: TObject; X, Y: Integer);
var
  Node : TTreeNode;
begin
  Node := TreeView1.Items.GetNode(HTreeItem(ListBox1.Items.Objects[ListBox1.ItemIndex]));
  if Node<>nil then Node.Text := ListBox1.Items[ListBox1.ItemIndex];
end;    procedure TForm1.ListBox1DragDrop(Sender, Source: TObject; X, Y: Integer);
begin
// 記住原來的 TTreeNode.ItemID
  ListBox1.AddItem(TreeView1.Selected.Text,TObject(TreeView1.Selected.ItemID));
  TreeView1.Selected.Text := '(Empty)';
end;    
Mickey
版主


發表:77
回覆:1882
積分:1390
註冊:2002-12-11

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-11-25 22:57:08 IP:218.32.xxx.xxx 未訂閱
qq_911228
一般會員


發表:30
回覆:22
積分:10
註冊:2003-09-29

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-11-26 02:51:03 IP:218.164.xxx.xxx 未訂閱
不好意思~~ 再跟你請教一下~~ 如果我一次多選的話~~ 要怎麼去判斷~~ 還有就是我又提一個有關的新問題~~ http://delphi.ktop.com.tw/topic.php?TOPIC_ID=41090 希望再麻煩你一下~~ 謝謝您的撥冗~~
引言: >< face="Verdana, Arial, Helvetica">
Mickey
版主


發表:77
回覆:1882
積分:1390
註冊:2002-12-11

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-11-26 11:51:23 IP:218.163.xxx.xxx 未訂閱
用 TListBox.Selected[Index] 判斷, 這問題應該可以自己嚐試解決, 這樣才會有收穫喔...加油
procedure TForm1.TreeView1DragDrop(Sender, Source: TObject; X, Y: Integer);
var
  Node : TTreeNode;
  i:integer;
begin
  for i:=0 to ListBox1.Items.Count-1 do begin
    if ListBox1.Selected[i] then begin
       Node := TreeView1.Items.GetNode(HTreeItem(ListBox1.Items.Objects[i]));
       if Node<>nil then Node.Text := ListBox1.Items[i];
    end;
  end;
end;
發表人 - Mickey 於 2003/11/26 11:58:18
qq_911228
一般會員


發表:30
回覆:22
積分:10
註冊:2003-09-29

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-11-27 15:28:36 IP:140.127.xxx.xxx 未訂閱
真是不好意思~~~ 我現在又有一個問題~~ 因問之前只有一個listbox~~~所以將item又丟回treeview時, 被丟回的節點位置是對的, 但現在有兩個以上的listbox,則listbox的資料有可能是來還丟來丟去, 最後再丟回treeview,則此時節點的位置就錯了~~ 不知道是不是listbox在戶丟的時,要記錄tobject的內容,但我對語法不熟, 所以請教你一下,謝謝。 3: //from listbox to listbox     begin       for j:= resource_list.Items.Count-1 downto 0 do       begin         if resource_list.Selected[j] then         begin              target_list.AddItem(resource_list.ItemS.Strings[j],TObject(resource_tree.Selections[j].ItemID)); resource_list.Items.Delete(j); end; end; end;
引言: 用 TListBox.Selected[Index] 判斷, 這問題應該可以自己嚐試解決, 這樣才會有收穫喔...加油
procedure TForm1.TreeView1DragDrop(Sender, Source: TObject; X, Y: Integer);
var
  Node : TTreeNode;
  i:integer;
begin
  for i:=0 to ListBox1.Items.Count-1 do begin
    if ListBox1.Selected[i] then begin
       Node := TreeView1.Items.GetNode(HTreeItem(ListBox1.Items.Objects[i]));
       if Node<>nil then Node.Text := ListBox1.Items[i];
    end;
  end;
end;
發表人 - Mickey 於 2003/11/26 11:58:18
Mickey
版主


發表:77
回覆:1882
積分:1390
註冊:2002-12-11

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-11-27 20:46:27 IP:218.32.xxx.xxx 未訂閱
改的通用一些 : Multi-Select 請自己加上
procedure TForm1.TreeViewDragDrop(Sender, Source: TObject; X, Y: Integer);
var
  Node : TTreeNode;
begin
  if Source is TListBox then begin
    Node := TreeView1.Items.GetNode(HTreeItem(TListBox(Source).Items.Objects[TListBox(Source).ItemIndex]));
    if Node<>nil then Node.Text := TListBox(Source).Items[TListBox(Source).ItemIndex];
  end;
end;    procedure TForm1.ListBoxDragDrop(Sender, Source: TObject; X, Y: Integer);
begin
// 記住原來的 TTreeNode.ItemID
  if Source is  TTreeView then begin
    TListBox(Sender).AddItem(TTreeView(Source).Selected.Text,TObject(TTreeView(Source).Selected.ItemID));
    TTreeView(Source).Selected.Text := '(Empty)';
  end
  else if Source is TListBox then begin
    TListBox(Sender).AddItem(TListBox(Source).Items[TListBox(Source).ItemIndex],
                             TListBox(Source).Items.Objects[TListBox(Source).ItemIndex]);
  end;
end;
系統時間:2024-11-23 4:04:31
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!