Delphi:树视图的自定义提示

Delphi:树视图的自定义提示,delphi,treeview,hint,Delphi,Treeview,Hint,有没有一种快速的方法可以为树状视图项的5个子项创建5个自定义提示 我有树视图,1个项目和5个子项目。我需要为每个子项提供一个特殊提示(第一个“F1”,第二个“F2”等等) 我无法将此应用于我的目的:?我会设置组件的提示以响应OnMouseMove(或者提供鼠标坐标的其他事件,您可以从中获取鼠标所在的项目-我可能弄错了名称,目前我没有Delphi).我会设置组件的提示,以响应OnMouseMove(或者提供鼠标坐标的其他事件,您可以从中获取鼠标悬停的项目-我可能弄错了名称,目前我没有Delphi)

有没有一种快速的方法可以为树状视图项的5个子项创建5个自定义提示

我有树视图,1个项目和5个子项目。我需要为每个子项提供一个特殊提示(第一个“F1”,第二个“F2”等等)


我无法将此应用于我的目的:?

我会设置组件的提示以响应
OnMouseMove
(或者提供鼠标坐标的其他事件,您可以从中获取鼠标所在的项目-我可能弄错了名称,目前我没有Delphi).

我会设置组件的提示,以响应
OnMouseMove
(或者提供鼠标坐标的其他事件,您可以从中获取鼠标悬停的项目-我可能弄错了名称,目前我没有Delphi)。

听起来您只是想要该事件:

有时,这种方法可能有点粗糙,提供了一个
节点
,您显然没有在上面悬停。如果需要更多控制,可以使用
GetNodeAt
gethitestinfo

procedure TMyForm.TreeView1Hint(Sender: TObject; const Node: TTreeNode; var Hint: string);
var
  P: TPoint;
  MyNode: TTreeNode;
  HitTestInfo: THitTests;
begin
  P := TreeView1.ScreenToClient(Mouse.CursorPos);
  MyNode := TreeView1.GetNodeAt(P.X, P.Y);
  HitTestInfo := TreeView1.GetHitTestInfoAt(P.X, P.Y) ;
  if htOnItem in HitTestInfo then begin
    Hint := MyNode.Text;
  end else begin
    Hint := '';
  end;
end;
thittes
的定义如下:

type
  THitTest = (htAbove, htBelow, htNowhere, htOnItem, htOnButton, htOnIcon,
    htOnIndent, htOnLabel, htOnRight, htOnStateIcon, htToLeft, htToRight);
  THitTests = set of THitTest;

正如您所见,这为您提供了很多细粒度的控制,可以控制何时以及显示什么作为提示。

听起来您只是想要事件:

有时,这种方法可能有点粗糙,提供了一个
节点
,您显然没有在上面悬停。如果需要更多控制,可以使用
GetNodeAt
gethitestinfo

procedure TMyForm.TreeView1Hint(Sender: TObject; const Node: TTreeNode; var Hint: string);
var
  P: TPoint;
  MyNode: TTreeNode;
  HitTestInfo: THitTests;
begin
  P := TreeView1.ScreenToClient(Mouse.CursorPos);
  MyNode := TreeView1.GetNodeAt(P.X, P.Y);
  HitTestInfo := TreeView1.GetHitTestInfoAt(P.X, P.Y) ;
  if htOnItem in HitTestInfo then begin
    Hint := MyNode.Text;
  end else begin
    Hint := '';
  end;
end;
thittes
的定义如下:

type
  THitTest = (htAbove, htBelow, htNowhere, htOnItem, htOnButton, htOnIcon,
    htOnIndent, htOnLabel, htOnRight, htOnStateIcon, htToLeft, htToRight);
  THitTests = set of THitTest;

正如您所见,这为您提供了很多细粒度的控制,可以控制何时以及显示什么作为提示。

是的,准确地说。我相信这是最快的,也有点标准的方法。是的,没错。我相信这是最快的标准方式。你能提供更多细节吗?您尝试的代码会很好。请更具体地说明哪些代码不适合您。我们不想整天猜测。你能提供更多细节吗?您尝试的代码会很好。请更具体地说明哪些代码不适合您。我们不想整天猜测。
TTreeView
没有
OnHint
事件。也许你正在考虑
TListView.onInfo>?@Andreas我刚刚在Delphi 2010上运行了这段代码。大卫:那么它一定是在德尔福2010中添加的,因为它在德尔福2009中没有。太棒了!!!您能解释一下如何为不同的子项(子项[1]-'AAA'/子项[2]-'BBB')显示不同的提示吗?+提示必须在指针下面(如何使用htBelow)?我会非常感激的
TTreeView
没有
OnHint
事件。可能您正在考虑
TListView.OnInfo
?@Andreas我刚刚在Delphi 2010上运行了此代码。大卫:那么它一定是在德尔福2010中添加的,因为它在德尔福2009中没有。太棒了!!!您能解释一下如何为不同的子项(子项[1]-'AAA'/子项[2]-'BBB')显示不同的提示吗?+提示必须在指针下面(如何使用htBelow)?我会非常感激的!