有没有快速的方法为5个Tree View项目创建5个自定义提示?
我有TreeView,1个Item和5个SubItems。我需要为每个SubItem提供一个特殊提示(第一个 - “F1”,第二个 - “F2”等等。)
我不能将此用于我的目的:http://delphi.about.com/od/vclusing/a/treenode_hint.htm?
答案 0 :(得分:2)
听起来你只想要OnHint
事件:
procedure TMyForm.TreeView1Hint(Sender: TObject; const Node: TTreeNode; var Hint: string);
begin
Hint := Node.Text;
end;
有时这种方法可能有点粗糙,并提供一个Node
,你显然不会徘徊。如果您想要更多控制权,可以使用GetNodeAt
和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;
正如您所看到的,这为您提供了很多细粒度的控制,可以控制您显示的时间和内容。
答案 1 :(得分:1)
我会设置组件的提示以响应OnMouseMove
(或者那个给你鼠标坐标的其他事件,从中你可以得到鼠标结束的项目 - 我可能弄错了名字和我没有Delphi的那一刻)。
答案 2 :(得分:0)