【问题标题】:Delphi: Custom hints for Tree ViewDelphi:树视图的自定义提示
【发布时间】:2011-09-16 12:48:26
【问题描述】:

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

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

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

【问题讨论】:

  • 你能提供更多细节吗?您尝试的代码会很好。
  • 请更具体地说明该代码对您不起作用的原因。我们不想整天都在猜测。

标签: delphi treeview hint


【解决方案1】:

听起来你只想要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;

如您所见,这可以让您对显示的时间和内容进行大量精细控制。

【讨论】:

  • TTreeView 没有OnHint 事件。
  • 也许你在考虑TListView.OnInfoTip?
  • @Andreas 我刚刚在 Delphi 2010 上使用TTreeView.OnHint 运行了这段代码。我确定它就在那里。
  • @David:那么它一定是在Delphi 2010中添加的,因为它在Delphi 2009中没有。
  • 优秀!!!你能解释一下如何为不同的 SubItems 显示不同的提示(SubItem[1]-'AAA'/SubItem[2]-'BBB')?+提示必须在指针下方(如何使用 htBelow)?我将非常感谢!
【解决方案2】:

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

【讨论】:

  • 是的,没错。我相信这是最快且有点标准的方式。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-13
  • 1970-01-01
  • 1970-01-01
  • 2011-10-29
相关资源
最近更新 更多