2016-11-04 3 views
6

Я использую 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

Выбор нулевой длины, указать атрибуты выбора, назначить SelText. –

ответ

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

+0

Отлично работает, спасибо! :) – Aleph0

1

ли вы попробовать играть с SelAttributes и SelText, SelStart, SelLenght?

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

Я попытался использовать 'SelAttributes', как показано в моем вопросе, но он работает только, если я использую' Lines.Add', но не работает, если я использую 'Lines.Insert'. Цвет меняется один раз и больше не меняется после этого. – Aleph0

+0

Я предлагаю вам вставить строку без форматирования с помощью 'Insert', а затем с помощью' SelStart', 'SelLength' для применения стиля к выделенному тексту – cristallo

+0

Спасибо, я использовал ответ Тома, но он похож на ваш ответ. ;) – Aleph0

Смежные вопросы