2

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

我有 TreeView、1 个项目和 5 个子项目。我需要每个子项的特殊提示(第一个 - “F1”,第二个 - “F2”,依此类推)。

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

4

2 回答 2

4

听起来你只想要这个OnHint事件:

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

有时这种方法可能有点粗糙,并提供了一个Node你显然没有悬停的。如果您想要更多控制,您可以使用GetNodeAtand 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;

正如您所看到的,这为您提供了对何时以及作为提示显示的内容的大量细粒度控制。

于 2011-06-16T19:58:19.493 回答
1

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

于 2011-06-16T16:17:25.753 回答