Shelltreeview从节点获取路径

时间:2013-03-27 04:16:51

标签: delphi

我正在使用onMouseMove的自定义提示,它正常工作我遇到的问题是返回字符串的完整路径,这是我的代码。

procedure TCoreVMain.CoreShellTreeViewMouseMove(Sender: TObject;
  Shift: TShiftState; X, Y: Integer);

  var
   tree: TsShellTreeView;
   hoverNode: TTreeNode;
   hitTest : THitTests;

begin

 if (Sender is TsShellTreeView) then
     tree := TsShellTreeView(Sender)
   else
     Exit;

   hoverNode := tree.GetNodeAt(X, Y) ;
   hitTest := tree.GetHitTestInfoAt(X, Y) ;
 if (lastHintNode <> hoverNode) then
   begin
     Application.CancelHint;

     if (hitTest <= [htOnItem, htOnIcon, htOnLabel, htOnStateIcon]) then
     begin
       lastHintNode := hoverNode;
       FileToolPanel.Caption := tree.path; //hovernode.Text;
       tree.Hint := NodeHint(hoverNode) ;
     end;
   end;
end;

hovernode.text只返回显示名称“temp”而不是“c:\ temp”,当节点项悬停而未选中时,如何恢复节点的完整路径?

提前致谢。

1 个答案:

答案 0 :(得分:1)

您需要从节点转换为其关联的shell文件夹。您可以这样做:

var 
  shellFolder: TShellFolder;
....
shellFolder := tree.Folders[hoverNode.Index];

shell文件夹对象只存储在节点的Data属性中,因此您可以这样做:

shellFolder := TShellFolder(hoverNode.Data);

获得shell文件夹后,您可以使用

获取完整路径
tree.Hint := shellFolder.PathName;