全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2577
推到 Plurk!
推到 Facebook!

ShellTreeView 拖曳檔案的問題

尚未結案
tahoo
一般會員


發表:22
回覆:19
積分:8
註冊:2003-05-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-09-12 16:19:03 IP:218.163.xxx.xxx 未訂閱
將TshellListview的檔案,用拖曳的方式,拖到 ShellTreeView ,但是如何要得知我目前拖到哪一 目錄之中,找了好久都找到不到,或是有什麼函數或事 件可以取得最後拖曳的地方呢? 如圖: 最先點的為阿貴目錄,想要將阿貴目錄中的某一檔案拖曳 到新資料夾,但要如何得知新資料夾的位置名稱 突然想學Delphi的新手
Vicen
高階會員


發表:13
回覆:145
積分:151
註冊:2005-03-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-09-12 21:10:21 IP:221.226.xxx.xxx 未訂閱
可以在 EndDrag 事件中进行处理:    例子是  ShellTreeView 接受 ShellListView 拖放动作,你可以根据需要进行修改即可。
procedure TForm1.ShellListView1EndDrag(Sender, Target: TObject; X,
  Y: Integer);
Var
  nUserSel : TTreeNode;
begin
  nUserSel := ShellTreeView1.GetNodeAt(x,y);
  if nUserSel<>Nil then
    ShowMessage(ShellTreeView1.Folders[nUserSel.Index].PathName);
end;
發表人 - vicen 於 2005/09/12 21:12:29
tahoo
一般會員


發表:22
回覆:19
積分:8
註冊:2003-05-13

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-09-13 13:05:10 IP:218.163.xxx.xxx 未訂閱
先謝謝Vicen 大大的回應,但是用這個方法,取得移動目的資料夾,還是和第之前相同,真怪,沒有函數可使用....
引言: 可以在 EndDrag 事件中进行处理: 例子是 ShellTreeView 接受 ShellListView 拖放动作,你可以根据需要进行修改即可。
procedure TForm1.ShellListView1EndDrag(Sender, Target: TObject; X,
  Y: Integer);
Var
  nUserSel : TTreeNode;
begin
  nUserSel := ShellTreeView1.GetNodeAt(x,y);
  if nUserSel<>Nil then
    ShowMessage(ShellTreeView1.Folders[nUserSel.Index].PathName);
end;
發表人 - vicen 於 2005/09/12 21:12:29
突然想學Delphi的新手
Vicen
高階會員


發表:13
回覆:145
積分:151
註冊:2005-03-14

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-09-13 13:19:37 IP:221.226.xxx.xxx 未訂閱
EndDrag应该写在拖放源的事件里,由拖放源的EndDrag事件取拖放目的地的值, 不妨把你的代码发上来看看,是否有什么地方搞错了,因为这是比较基本的拖放操作,错误的机率不是很大的。
tahoo
一般會員


發表:22
回覆:19
積分:8
註冊:2003-05-13

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-09-13 14:11:34 IP:218.163.xxx.xxx 未訂閱
源碼如下:
Procedure TfrmMain.ShellListViewEndDrag(Sender, Target: TObject; X, Y: Integer);
Var
  nUserSelect: TTreeNode;
Begin
  If Sender Is TShellListView Then
  Begin
    nUserSelect := ShellTreeView.GetNodeAt(x, y);
    If nUserSelect <> Nil Then
    Begin
      //來源檔案
      gsMoveFileName := ShellListView.Selectedfolder.PathName;
      //移動目錄
      gsMoveFloder := ShellTreeView.Folders[nUserSelect.Index].PathName;
      lblMessage.Caption := '搬移檔案 --->'   gsMoveFileName   ' 到 ===>'   gsMoveFloder   '\';
    End;
  End;
End;
引言: EndDrag应该写在拖放源的事件里,由拖放源的EndDrag事件取拖放目的地的值, 不妨把你的代码发上来看看,是否有什么地方搞错了,因为这是比较基本的拖放操作,错误的机率不是很大的。
突然想學Delphi的新手 發表人 - tahoo 於 2005/09/13 14:17:55
tahoo
一般會員


發表:22
回覆:19
積分:8
註冊:2003-05-13

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-09-13 14:23:49 IP:218.163.xxx.xxx 未訂閱
原來是index少了1,    ShellTreeView.Folders[nUserSelect.Index  1 ].PathName; 紅色部份加入即可,謝謝大大給我的解答
引言: EndDrag应该写在拖放源的事件里,由拖放源的EndDrag事件取拖放目的地的值, 不妨把你的代码发上来看看,是否有什么地方搞错了,因为这是比较基本的拖放操作,错误的机率不是很大的。
突然想學Delphi的新手
系統時間:2024-04-25 1:10:43
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!