1

我正在使用带有 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”,当节点项悬停且未选择时,如何恢复节点的完整路径?

提前致谢。

4

1 回答 1

1

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

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

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

shellFolder := TShellFolder(hoverNode.Data);

拥有 shell 文件夹后,您可以获得完整路径

tree.Hint := shellFolder.PathName;
于 2013-03-27T08:19:53.850 回答