Delphi 如何同时使用工具提示和提示模式?

Delphi 如何同时使用工具提示和提示模式?,delphi,virtualtreeview,tvirtualstringtree,Delphi,Virtualtreeview,Tvirtualstringtree,在Windows中,如果列太窄而无法显示全文,则会以内联方式显示工具提示,并可以显示缺少的文本: 需要注意的是,提示窗口是内联的,显示文本(即,它不在节点的“下方”) 这相当于VirtualTreeview HintModehmToolTip: TVTHintMode = ( hmDefault, // show the hint of the control hmHint, // show node specific hi

在Windows中,如果列太窄而无法显示全文,则会以内联方式显示
工具提示
,并可以显示缺少的文本:

需要注意的是,提示窗口是内联的,显示文本(即,它不在节点的“下方”)

这相当于VirtualTreeview HintMode
hmToolTip

  TVTHintMode = (
    hmDefault,            // show the hint of the control
    hmHint,               // show node specific hint string returned by the application
    hmHintAndDefault,     // same as hmHint but show the control's hint if no node is concerned
    hmTooltip             // show the text of the node if it isn't already fully shown
  );
  • hmTooltip:如果节点的文本尚未完全显示,则显示该文本
也有暗示,;不仅仅是工具提示 Explorer还能够显示一个提示,这是一个浮动在悬停单元格附近或下方的提示窗口:

这在VirtualTreeview中相当于
hmHint

  • hmHint:显示应用程序返回的特定于节点的提示字符串
然后处理OnGetHint事件

为什么不能两者兼而有之? 现在出现了一个阻力:Windows同时执行两个功能:

  • 向您显示全文(如果被切断)(ala
    hmTooltip
  • 以及允许我添加更多文本(ala
    hmHint

但是,如果没有要显示的其他文本,则应继续仅显示内联工具提示:

如果它不是在以下位置被截断:只是额外的文本:

我想要那个

我该怎么做

研究工作
  • 如果我将HintMode设置为
    hmTooltip
    ,则
    OnGetHint
    永远不会触发(而且我从来没有机会添加自定义信息)
  • 如果我将HintMode设置为
    hmHint
    (或
    hmHintAndDefault
    ),则会触发
    OnGetHint
    事件,但树将不再显示截断部分
  • 如果HintMode
    hmHint
    ,则所显示的提示将永不内联;但是,将始终位于单元格下方
这样的功能可能吗?至少,我认为我必须重新发明所有的细胞测量,以确定原位文本是否被切断

  • 但是我唯一能得到一个
    OnGetHint
    事件的方法
  • 通过将HintMode设置为
    hmHint
  • 但是如果HintMode
    hmHint
  • 那么这个暗示就永远不会出现了
  • 但是如果我将HintMode设置为
    hmTooltip
    ,使其就位
  • 我永远不会得到
    OnGetHint
    事件
  • goto 10
额外阅读
编辑:澄清 我讨厌这样做,因为这意味着一个答案或一条可以寻求的途径。但想象一下下面的真值表:

OnGetHint  IsTreeTextClipped  Hint
=========  =================  ==================
Empty      No                 No hint
Empty      Yes                Inline tooltip
Non-empty  No                 Hint below; shows only GetHint text only
Non-empty  Yes                Hint below; show both TreeText+CRLF+GetHint text
问题是,如果调用了
OnGetHint
,则永远不会有内联工具提示

  • 您可以调用OnGetHint
    hmHint
  • 或者您可以有一个内联工具提示(
    hmTooltip
  • 但是您永远不能调用OnGetHint,如果它不返回任何内容,请遵循
    hmTooltip
    模式
如何使用调用OnGetHint,如果它不返回任何内容,请遵循
hmTooltip
模式


当然,没有任何东西说必须要参与。这只是一个如何将提示文本获取到VirtualTrees进行处理的示例。

我不了解-在第三张图片中,全文部分也没有内联。通过在OnGetHint?中手动添加全文,您肯定可以通过VT获得这一点。@UliGerhardt在问题的底部添加了澄清部分。是否立即清除?还添加了一个模型,用于对比同一treeview控件中的两个提示窗口行为,因此
OnGetHint
事件应该有一个额外的
var HintMode
参数?:-)@乌利格哈特:那将是最理想的。或者理想情况下会有一个提示模式
hmHintAndTooltip
。或者,理想情况下,当即将显示
hmTooltip
时,树将只调用
OnGetHint
,并在下面显示
hmTooltip
,而不是内联显示。但这些都是好主意。我该怎么做呢?