繁体   English   中英

在TRichEdit顶部插入彩色线条

[英]Insert colored line at the top of TRichEdit

我正在使用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末尾插入。

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

如果要在开头插入,则需要将所选的开始和长度设置为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;

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

在此输入图像描述

你尝试过使用SelAttributesSelTextSelStartSelLenght吗?

Insert(0,'This is blue text.');
RichEdit1.SelStart := 0; 
RichEdit1.SelLenght := //end;
RichEdit1.SelAttributes.Color := clBlue;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM