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