Delphi RichEdit文本字体变化异常

Delphi RichEdit文本字体变化异常,delphi,fonts,richedit,Delphi,Fonts,Richedit,我正在使用delphixe3。我需要将长语句的某些部分设置为粗体和红色。由于TLabel不支持此功能,而合并多个TLabel相当不方便,并且不支持粗体,因此我决定通过TRichEdit控件实现此功能,方法是设置: BorderStyle为bsNone。 ParentColor为true。 只读到true。 然后使用以下代码将2个字符设置为粗体: reMsg.SelStart := 2; reMsg.SelLength := 2; reMsg.SelAttributes.Style :

我正在使用delphixe3。我需要将长语句的某些部分设置为粗体和红色。由于TLabel不支持此功能,而合并多个TLabel相当不方便,并且不支持粗体,因此我决定通过TRichEdit控件实现此功能,方法是设置:

BorderStyle为bsNone。 ParentColor为true。 只读到true。 然后使用以下代码将2个字符设置为粗体:

  reMsg.SelStart := 2;
  reMsg.SelLength := 2;
  reMsg.SelAttributes.Style := [fsBold];
  reMsg.SelStart := 0;
  reMsg.SelLength := 0;
但是我发现富编辑控件的字体会变为奇怪的字体。下面是tlabel控件和trichedit控件的比较:

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

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

reMsg.Font.Name := labMsg.Font.Name;
reMsg.Font.Charset := labMsg.Font.Charset;
但仍然无法解决问题


为什么?

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

在这张图片上,word以粗体字体输出

我没有修改字体属性,无论是TForm还是TRichEdit。刚刚创建了一个新项目并将组件放置在表单上。因为所有工作都按预期进行,所以我假设您问题中描述的问题与手动修改的TRichEdit字体属性有关。只需返回TRichEdit字体的默认值或将其ParentFont属性设置为true

作为一个额外的解决方案,您最好看看TMDLabel,而不是为此使用TRichEdit。它有很多功能,可以与文字样式、颜色、大小等一起使用

我不知道这个nice组件的作者姓名,但有他的网站:

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

<fs:14><fc:clRed>This</fc> is a <fc:clBlue><b>test</b> caption</fc> for TLabel</fs>
将此文本放入TMDLabel后,您将从官方网站下载的演示应用程序中获得此屏幕截图:


还有一个演示应用程序,它解释了如何使用该组件及其支持的标签。在我看来,值得一试。

似乎是reMsg的FontPitch属性。字体也发生了变化。。。您是否尝试过reMsg.Font.AssignlabMsg.Font?这并没有回答所问的问题。正如你们所知,推荐问题是离题的,因为这个答案只是推荐了一个组件,所以它不适合。@DavidHeffernan谢谢!我已经扩展了我的答案,解释了如何避免OP观察到的效果。现在的问题是,问题中报告的行为无法复制。这意味着这个问题应该被关闭而不是被回答。@DavidHeffernan如果一个人不能重现所描述的行为,那么不回答这个问题是一个案例吗?当然。你不能回答一个不恰当的问题。如果你这样做了,期待着被否决的选票。