在 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
的末尾。
我的问题是:有没有一种简单的方法可以得到我正在寻找的结果?
你试过 SelAttributes
和 SelText
、SelStart
、SelLenght
吗?
Insert(0,'This is blue text.');
RichEdit1.SelStart := 0;
RichEdit1.SelLenght := //end;
RichEdit1.SelAttributes.Color := clBlue;
如果要在开头插入,需要将选择的开始和长度设置为0:
RichEditLog.SelStart := 0;
RichEditLog.SelLength := 0;
RichEditLog.SelAttributes.Color := clBlack;
RichEditLog.Lines.Insert(0, 'Operation 1 OK');
或者,您可以将文本分配给 RichEdit.SelText
而不是 RichEditLog.Lines.Insert()
,但是您需要自己添加换行符,f.ex.:
RichEditLog.SelText := 'Operation 1 OK'+sLineBreak;
无论哪种方式,当应用于您的测试代码时,结果是:
我正在使用 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
的末尾。
我的问题是:有没有一种简单的方法可以得到我正在寻找的结果?
你试过 SelAttributes
和 SelText
、SelStart
、SelLenght
吗?
Insert(0,'This is blue text.');
RichEdit1.SelStart := 0;
RichEdit1.SelLenght := //end;
RichEdit1.SelAttributes.Color := clBlue;
如果要在开头插入,需要将选择的开始和长度设置为0:
RichEditLog.SelStart := 0;
RichEditLog.SelLength := 0;
RichEditLog.SelAttributes.Color := clBlack;
RichEditLog.Lines.Insert(0, 'Operation 1 OK');
或者,您可以将文本分配给 RichEdit.SelText
而不是 RichEditLog.Lines.Insert()
,但是您需要自己添加换行符,f.ex.:
RichEditLog.SelText := 'Operation 1 OK'+sLineBreak;
无论哪种方式,当应用于您的测试代码时,结果是: