我正在使用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”,当节点项悬停而未选中时,如何恢复节点的完整路径?
提前致谢。
答案 0 :(得分:1)
您需要从节点转换为其关联的shell文件夹。您可以这样做:
var
shellFolder: TShellFolder;
....
shellFolder := tree.Folders[hoverNode.Index];
shell文件夹对象只存储在节点的Data
属性中,因此您可以这样做:
shellFolder := TShellFolder(hoverNode.Data);
获得shell文件夹后,您可以使用
获取完整路径tree.Hint := shellFolder.PathName;