在TRichEdit顶部插入彩色线条

Ale*_*ph0 6 delphi delphi-xe7

我正在使用a 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');
Run Code Online (Sandbox Code Playgroud)

问题是我TRichEdit只应用第一次颜色变化并保留所有颜色.如果我使用Add()而不是Insert(),颜色正在改变,但线条插入我的结尾TRichEdit.

我的问题是:有没有一种简单的方法来获得我正在寻找的结果?

Tom*_*erg 5

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

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

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

RichEditLog.SelText := 'Operation 1 OK'+sLineBreak;
Run Code Online (Sandbox Code Playgroud)

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

在此输入图像描述