Delphi:树视图的自定义提示

时间:2011-06-16 16:11:59

标签: delphi treeview hint

有没有快速的方法为5个Tree View项目创建5个自定义提示?

我有TreeView,1个Item和5个SubItems。我需要为每个SubItem提供一个特殊提示(第一个 - “F1”,第二个 - “F2”等等。)

我不能将此用于我的目的:http://delphi.about.com/od/vclusing/a/treenode_hint.htm

3 个答案:

答案 0 :(得分:2)

听起来你只想要OnHint事件:

procedure TMyForm.TreeView1Hint(Sender: TObject; const Node: TTreeNode; var Hint: string);
begin
  Hint := Node.Text;
end;

有时这种方法可能有点粗糙,并提供一个Node,你显然不会徘徊。如果您想要更多控制权,可以使用GetNodeAtGetHitTestInfoAt

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)

这也是一个很好的例子:

http://delphi.about.com/od/vclusing/a/treenode_hint.htm

问候。