我正在使用Delphi XE3。我需要将长声明的某些部分设置为粗体和红色。由于TLabel不支持该功能,因此合并多个TLabel十分不便,并且TJvHTLabel不支持粗体,因此,我决定通过设置TRichEdit控件来实现这一点:
然后使用以下代码将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控件的比较:
您可以在第二个标题中看到字体已更改。
我尝试了许多方法,例如手动设置richedit控件的字体:
reMsg.SelStart := 2;
reMsg.SelLength := 2;
reMsg.SelAttributes.Style := [fsBold];
reMsg.SelStart := 0;
reMsg.SelLength := 0;
但是仍然不能解决问题。
为什么?
答案 0 :(得分:-1)
也许,您应该将TRichEdit
的属性ParentFont
设置为true。在这种情况下,TRichEdit
将使用其父字体(例如TForm
)。
之后,将您的代码应用于文本的粗体部分,您将看到:
在此图像上,以“ 粗体”字体
在单词“ this”中输出“ is”我没有同时修改Font
和TForm
的{{1}}属性。刚刚创建了新项目并将组件放置在表单上。因为所有工作都按预期进行,所以我认为您问题中描述的问题与手动修改的TRichEdit
的{{1}}属性有关。只需获取TRichEdit
字体的默认值或将其Font
属性设置为TRichEdit
。
作为另一种解决方案,最好不要使用ParentFont
来达到这个目的。它具有许多功能,可播放文字样式,颜色,大小等。
我不知道这个漂亮组件的作者姓名,但是有他的网站:Infintuary.org
例如,使用此伪HTML代码,您可以根据需要“绘制”文本:
true
将这段文字放入TRichEdit
后,您将获得此文字(从官方网站下载的演示应用的屏幕截图):
还有一个演示应用程序,该应用程序说明了如何使用此组件及其支持的标签。我认为值得尝试。