【问题标题】:RichEdit, How to set the background color of one single lineRichEdit,如何设置单行的背景颜色
【发布时间】:2013-12-15 15:35:42
【问题描述】:

我有一个包含源代码的 TRichEdit 控件。我想设置单行的背景颜色。

我知道如何设置 text 颜色,但是没有办法设置背景颜色吗?我不是在谈论整个控件的整个背景颜色,我只是在谈论如何更改一行。

我真的必须编写自定义控件来执行此操作吗?

【问题讨论】:

  • 迟来的评论。 JediVCL Richedit 除了常规颜色外,还可以做高亮(backColor)。

标签: colors trichedit c++builder-xe3


【解决方案1】:

没有用于设置单个字符/行的背景颜色的TRichEdit 属性。但是,您可以使用 Win32 API SendMessage() 函数或 TRichEdit 自己的 Perform() 方法向其发送 EM_SETCHARFORMAT 消息,指定 CHARFORMAT2 结构,其 crBackColor 字段设置为想要的颜色。您可以通过先突出显示现有字符来将格式应用于现有字符,或者如果没有选择,则可以将格式应用于当前插入符号位置。

【讨论】:

  • 啊,这就是我要找的答案。 (我知道 TRichEdit 没有这个。如果是,我不会在这里问它;)
  • 我又回到了这个程序,这次我想设置整行的背景颜色,而不仅仅是有文本的地方。我想从左到右突出整行,即使它是空的。这可能吗?
  • 只能选择字符,不能选择行。如果一行是空的,则它没有可供选择的字符。在这种情况下,您唯一的选择是将 RichEdit 子类化并手动自定义绘制它。否则,请使用具有更多可用选项的其他组件,例如 SynEdit。
【解决方案2】:

MSDN on RTF 指定\cbN,其中 N 是颜色索引。

其他搜索表明很多应用程序(OS X 的本机 RTF 查看器、Microsoft Word)不支持此功能,因此您可能应该寻找自定义解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-11
    • 1970-01-01
    • 2019-02-28
    • 1970-01-01
    • 2014-03-23
    • 2013-05-06
    • 2016-03-16
    • 2012-09-21
    相关资源
    最近更新 更多