Delphi VirtualStringTree OnGetHint

Delphi VirtualStringTree OnGetHint

我想在单元格文本已完全显示时显示提示。
所以,在表单的 OnCreate

procedure TForm1.FormCreate(Sender: TObject);
begin
  VirtualStringTree1.HintMode := hmHint;
  VirtualStringTree1.ShowHint := True;
end;

和 OnGetHint

procedure TForm1.VirtualStringTree1GetHint(Sender: TBaseVirtualTree;
  Node: PVirtualNode; Column: TColumnIndex;
  var LineBreakStyle: TVTTooltipLineBreakStyle; var HintText: string);
begin
  HintText := IntToStr(Node.Index);
end;

但什么也没发生。

OnGetHint 事件处理程序未触发,甚至 TBaseVirtualTree.CMHintShow 断点也不起作用。

我该怎么办?

我正在使用 delphi xe3,virtualtreeview 5.2.1。


感谢您的回答。

我按照你的指导去做了。

应用程序属性

Vst 属性

要实施的 Vst 事件

但没有任何改变。
OnGetHint、OnGetHintSize、OnDrawHint 根本不会触发。
(当 HintMode 设置为 hmToolTip 且文本未完全显示时,仅触发 OnGetHint)

是的,我阅读了该文档 VirtualTreeView.pdf
但是关于事件的所有描述都与您的报价完全相同。
我需要更多解释。


更新:

很奇怪的事情。
我已经测试了其他电脑。

我的电脑 Windows 10 xe3 vst 5.2.1

PC 1 Windows 10 xe3 vst 5.2.1

PC 2 Windows 10

什么????
代码不是问题。
我不知道为什么,甚至不知道从哪里开始。

无论如何,我真的很感谢你的回答并接受它。
如果有人知道这个奇怪的事情,请告诉我。
如果我发现了,我会更新。

几个属性和事件处理程序必须在 place/implemented 中才能显示特定于节点的提示。以下内容应该可以帮助您入门:

应用程序属性

  • ShowHint := True

Vst 属性

  • Hint,例如'Hint for the whole VST'
  • HintAnimation,例如hatNone
  • HintMode,例如hmHintAndDefault
  • ShowHint, True
  • ParentShowHint,根据需要,不知道就用False

要实施的 Vst 事件

  • OnDrawHint()
  • OnGetHint()
  • OnGetHintSize()

来自文档:

Use an event handler for OnDrawHint() to draw the hint or tooltip for the given node. You must implement this event and OnGetHintSize() to get a hint at all.

在网上查找 VirtualTreeView.pdf 文档