如何在节点标题上加下划线或突出显示

r038tmp5

我想在我的virtualtreeview中实现搜索功能。我想在节点中突出显示或加下划线。

我怎样才能做到这一点?谢谢

TLama

我将为该OnDrawText事件编写一个处理程序,因为(这是此时)您将传递节点文本,将要渲染该文本的矩形以及为此渲染准备的画布,这是唯一的事件。两项任务都有更多适当的事件(例如OnBeforeCellPaint,或OnAfterItemErase用于文本背景突出显示和/OnAfterCellPaintOnAfterItemPaint用于文本下划线),只是它们中没有一个提供特定于文本呈现的参数OnDrawText

如果您的节点不是多行的,并且您不关心文本对齐,阅读方向或字符串缩短,那么您的任务可能与以下示例之一一样简单。

1.匹配的文字背景色

procedure TForm1.VirtualTreeDrawText(Sender: TBaseVirtualTree; TargetCanvas: TCanvas;
  Node: PVirtualNode; Column: TColumnIndex; const Text: string; const CellRect: TRect;
  var DefaultDraw: Boolean);
var
  BackMode: Integer;
begin
  // if the just rendered node's Text starts with the text written in a TEdit control
  // called Edit, then...
  if StartsText(Edit.Text, Text) then
  begin
    // store the current background mode; we need to use Windows API here because the
    // VT internally uses it (so the TCanvas object gets out of sync with the DC)
    BackMode := GetBkMode(TargetCanvas.Handle);
    // setup the color and draw the rectangle in a width of the matching text
    TargetCanvas.Brush.Color := clYellow;
    TargetCanvas.FillRect(Rect(
      CellRect.Left,
      CellRect.Top + 1,
      CellRect.Left + TargetCanvas.TextWidth(Copy(Text, 1, Length(Edit.Text))),
      CellRect.Bottom - 1)
    );
    // restore the original background mode (as it likely was modified by setting the
    // brush color)
    SetBkMode(TargetCanvas.Handle, BackMode);
  end;
end;

视觉输出示例:

在此处输入图片说明

2.匹配文字下划线

procedure TForm1.VirtualTreeDrawText(Sender: TBaseVirtualTree; TargetCanvas: TCanvas;
  Node: PVirtualNode; Column: TColumnIndex; const Text: string; const CellRect: TRect;
  var DefaultDraw: Boolean);
begin
  // if the just rendered node's Text starts with the text written in a TEdit control
  // called Edit, then...
  if StartsText(Edit.Text, Text) then
  begin
    TargetCanvas.Pen.Color := clRed;
    TargetCanvas.MoveTo(CellRect.Left, CellRect.Bottom - 2);
    TargetCanvas.LineTo(
      CellRect.Left + TargetCanvas.TextWidth(Copy(Text, 1, Length(Edit.Text))),
      CellRect.Bottom - 2
    );
  end;
end;

以及示例视觉输出:

在此处输入图片说明

在实际代码中,我建议您预先计算那些高光形状,OnDrawText以防万一只能画图,但是优化将由您自己决定;我想重点是事件本身。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

AvalonEdit-语法突出显示-如何添加下划线,更改字体大小等?

来自分类Dev

AvalonEdit-语法突出显示-如何添加下划线,更改字体大小等?

来自分类Dev

如何在绘图标题或标签上加下划线?(ggplot2)

来自分类Dev

如何在标签上加下划线?

来自分类Dev

如何在索引前添加下划线?

来自分类Dev

如何在标签上加下划线?

来自分类Dev

如何在php值下方添加下划线

来自分类Dev

如何从下划线更改括号突出显示?

来自分类Dev

如何在Vim中在当前行下划线(而不是突出显示)?

来自分类Dev

如何在Apache POI中给文本加下划线以及如何隐藏表格边框

来自分类Dev

如何在iOS中为uibutton的文本和颜色加下划线

来自分类Dev

如何在WP 8.1中为Hyperlinkbutton添加下划线

来自分类Dev

如何在输入按钮中对访问键加下划线

来自分类Dev

如何在MS Word中用波浪红线加下划线?

来自分类Dev

如何在MFC C ++中对文本加下划线

来自分类Dev

如何在HTML和CSS中对字母组加下划线

来自分类Dev

如何在jsp中给整个div标签加下划线?

来自分类Dev

Ubuntu手机,如何在键盘上加下划线

来自分类Dev

如何在角度ng-repeat中对第n个字母加下划线?

来自分类Dev

如何在Android中为Button文本加下划线?

来自分类Dev

如何在 Microsoft Word 中的文本后正确加下划线?

来自分类Dev

如何使用未加下划线的NSMutableAttributedString添加链接?

来自分类Dev

如何向 WebStorm 添加下划线混合库?

来自分类Dev

在数字之间加下划线

来自分类Dev

在Xcode的出口前加下划线

来自分类Dev

在离子中添加下划线

来自分类Dev

如何为 html 或 css 中的文本创建自定义下划线或突出显示?

来自分类Dev

崇高文字:突出显示,粗体或下划线文字

来自分类Dev

如何在标题的下划线(例如前40px)?

Related 相关文章

  1. 1

    AvalonEdit-语法突出显示-如何添加下划线,更改字体大小等?

  2. 2

    AvalonEdit-语法突出显示-如何添加下划线,更改字体大小等?

  3. 3

    如何在绘图标题或标签上加下划线?(ggplot2)

  4. 4

    如何在标签上加下划线?

  5. 5

    如何在索引前添加下划线?

  6. 6

    如何在标签上加下划线?

  7. 7

    如何在php值下方添加下划线

  8. 8

    如何从下划线更改括号突出显示?

  9. 9

    如何在Vim中在当前行下划线(而不是突出显示)?

  10. 10

    如何在Apache POI中给文本加下划线以及如何隐藏表格边框

  11. 11

    如何在iOS中为uibutton的文本和颜色加下划线

  12. 12

    如何在WP 8.1中为Hyperlinkbutton添加下划线

  13. 13

    如何在输入按钮中对访问键加下划线

  14. 14

    如何在MS Word中用波浪红线加下划线?

  15. 15

    如何在MFC C ++中对文本加下划线

  16. 16

    如何在HTML和CSS中对字母组加下划线

  17. 17

    如何在jsp中给整个div标签加下划线?

  18. 18

    Ubuntu手机,如何在键盘上加下划线

  19. 19

    如何在角度ng-repeat中对第n个字母加下划线?

  20. 20

    如何在Android中为Button文本加下划线?

  21. 21

    如何在 Microsoft Word 中的文本后正确加下划线?

  22. 22

    如何使用未加下划线的NSMutableAttributedString添加链接?

  23. 23

    如何向 WebStorm 添加下划线混合库?

  24. 24

    在数字之间加下划线

  25. 25

    在Xcode的出口前加下划线

  26. 26

    在离子中添加下划线

  27. 27

    如何为 html 或 css 中的文本创建自定义下划线或突出显示?

  28. 28

    崇高文字:突出显示,粗体或下划线文字

  29. 29

    如何在标题的下划线(例如前40px)?

热门标签

归档