在TRichEdit

时间:2016-11-04 12:33:12

标签: delphi delphi-xe7

我正在使用TRichEdit来显示我的应用程序中已完成的上一次操作。我TRichEdit的第一行应该是最后一次操作。如果操作失败,我想把这一行改为红色。

我的问题是我无法在TRichEdit的顶部插入彩色线条。这是我尝试过的:

RichEditLog.SelAttributes.Color := clBlack;
RichEditLog.Lines.Insert(0, 'Operation 1 OK');
// RichEditLog.Lines.Add('Operation 1 OK');

RichEditLog.SelAttributes.Color := clRed;
RichEditLog.Lines.Insert(0, 'Operation 2 failed');
// RichEditLog.Lines.Add('Operation 2 failed');

RichEditLog.SelAttributes.Color := clRed;
RichEditLog.Lines.Insert(0, 'Operation 3 failed');
// RichEditLog.Lines.Add('Operation 3 failed');

RichEditLog.SelAttributes.Color := clBlack;
RichEditLog.Lines.Insert(0, 'Operation 4 OK');
// RichEditLog.Lines.Add('Operation 4 OK');

问题是我的TRichEdit仅应用第一次颜色更改并保留所有颜色。如果我使用Add()代替Insert(),则颜色会发生变化,但该行会插入TRichEdit的末尾。

我的问题是:有没有一种简单的方法可以获得我想要的结果?

2 个答案:

答案 0 :(得分:5)

如果要在开头插入,则需要将选定的开始和长度设置为0:

RichEditLog.SelStart := 0;
RichEditLog.SelLength := 0;
RichEditLog.SelAttributes.Color := clBlack;
RichEditLog.Lines.Insert(0, 'Operation 1 OK');

或者,您可以将文本分配给RichEditLog.Lines.Insert(),而不是RichEdit.SelText,但是您需要自己添加新的行字符,f.ex。:

RichEditLog.SelText := 'Operation 1 OK'+sLineBreak;

无论哪种方式,当应用于您的测试代码时,结果为:

enter image description here

答案 1 :(得分:1)

您是否尝试过使用SelTextSelStartSelLenghtInsert(0,'This is blue text.'); RichEdit1.SelStart := 0; RichEdit1.SelLenght := //end; RichEdit1.SelAttributes.Color := clBlue;

 @Rule
public ActivityTestRule<MainActivity> mActivityTestRule = new ActivityTestRule<MainActivity>(
        MainActivity.class, true, true) {
};