有没有一种快速的方法来为树视图项的 5 个子项创建 5 个自定义提示?
我有 TreeView、1 个项目和 5 个子项目。我需要每个子项的特殊提示(第一个 - “F1”,第二个 - “F2”,依此类推)。
我不能将此应用于我的目的:http ://delphi.about.com/od/vclusing/a/treenode_hint.htm ?
听起来你只想要这个OnHint
事件:
procedure TMyForm.TreeView1Hint(Sender: TObject; const Node: TTreeNode; var Hint: string);
begin
Hint := Node.Text;
end;
有时这种方法可能有点粗糙,并提供了一个Node
你显然没有悬停的。如果您想要更多控制,您可以使用GetNodeAt
and GetHitTestInfoAt
:
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;
的定义THitTests
如下:
type
THitTest = (htAbove, htBelow, htNowhere, htOnItem, htOnButton, htOnIcon,
htOnIndent, htOnLabel, htOnRight, htOnStateIcon, htToLeft, htToRight);
THitTests = set of THitTest;
正如您所看到的,这为您提供了对何时以及作为提示显示的内容的大量细粒度控制。
我会设置组件的提示以响应OnMouseMove
(或其他为您提供鼠标坐标的事件,您可以从中获取鼠标所在的项目 - 我可能弄错了名称,目前我没有 Delphi )。