RichEdit文本字体发生奇怪的变化

时间:2018-11-04 06:08:05

标签: delphi fonts richedit

我正在使用Delphi XE3。我需要将长声明的某些部分设置为粗体和红色。由于TLabel不支持该功能,因此合并多个TLabel十分不便,并且TJvHTLabel不支持粗体,因此,我决定通过设置TRichEdit控件来实现这一点:

  1. 将borderStyle更改为bsNone。
  2. ParentColor为true。
  3. 只读为真。

然后使用以下代码将2个字符设置为粗体:

* Get the column object to Optimize
 DATA(lo_cols) = lo_salv_table->get_columns( ).
 lo_cols->set_optimize( if_salv_c_bool_sap=>true ).

* Change fieldcatalog
 DATA(lt_columns) = lo_cols->get( ).

 LOOP AT lt_columns ASSIGNING FIELD-SYMBOL(<ls_column>).

   <ls_column>-r_column->set_f1_rollname( value = '' ).

 ENDLOOP.

但是我发现丰富的编辑控件的字体将变为一种奇怪的字体。下面是tlabel控件和trichedit控件的比较:

enter image description here

您可以在第二个标题中看到字体已更改。

我尝试了许多方法,例如手动设置richedit控件的字体:

  reMsg.SelStart := 2;
  reMsg.SelLength := 2;
  reMsg.SelAttributes.Style := [fsBold];
  reMsg.SelStart := 0;
  reMsg.SelLength := 0;

但是仍然不能解决问题。

为什么?

1 个答案:

答案 0 :(得分:-1)

也许,您应该将TRichEdit的属性ParentFont设置为true。在这种情况下,TRichEdit将使用其父字体(例如TForm)。 之后,将您的代码应用于文本的粗体部分,您将看到:

在此图像上,以“ 粗体”字体

在单词“ this”中输出“ is”

我没有同时修改FontTForm的{​​{1}}属性。刚刚创建了新项目并将组件放置在表单上。因为所有工作都按预期进行,所以我认为您问题中描述的问题与手动修改的TRichEdit的{​​{1}}属性有关。只需获取TRichEdit字体的默认值或将其Font属性设置为TRichEdit

作为另一种解决方案,最好不要使用ParentFont来达到这个目的。它具有许多功能,可播放文字样式,颜色,大小等。

我不知道这个漂亮组件的作者姓名,但是有他的网站:Infintuary.org

例如,使用此伪HTML代码,您可以根据需要“绘制”文本:

true

将这段文字放入TRichEdit后,您将获得此文字(从官方网站下载的演示应用的屏幕截图):

enter image description here

还有一个演示应用程序,该应用程序说明了如何使用此组件及其支持的标签。我认为值得尝试。