|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Проблема с подсветкой части строк добавляемых в TRichEdit
Добрый день!
Столкнулся с проблемой. Необходимо подсвечивать часть добавляемых строк. Написал процедуру: Код:
procedure AddLineToRichEdit(LogMsg : TLogMessage); var PrefixStr, FullStr : string; PrevTextLen, PrevSelStart, FoundPos : integer; procedure SelectRgn(sfrom, sto : longint; hRich : THandle); var CharRange : TCharRange; begin CharRange.cpMin := sfrom; CharRange.cpMax := sto; SendMessage(hRich, EM_EXSETSEL, 0, Longint(@CharRange)); end; {аналог вызовов REdit.SelStart, REdit.SelLength только одним сообщением REdit.SelStart := sfrom; REdit.SelLength := sto - sfrom;} begin PrevTextLen := Length(REdit.Text); PrevSelStart := REdit.SelStart; PrefixStr := GetLogMsgPrefix(LogMsg.DirectionType, LogMsg.Time); FullStr := PrefixStr + LogMsg.Text; if (LogMsg.HexLog <> '') then FullStr := FullStr + #13{#10} + LogMsg.HexLog; REdit.Lines.Add(FullStr); FoundPos := PrevTextLen; if (FoundPos >= 0) then begin SelectRgn(FoundPos, FoundPos + Length(PrefixStr), REdit.Handle); SetStyle($00979797, [], REdit.Handle); end; end; Но при каждой новой добавленной строке происходит сдвиг вправо подсвечиваемой области. т.е. по непонятной причине выделенная область к которой применяется стиль сдвигается. Получается вот так: photo_2023-11-06_13-30-08_result.jpg Я подумал, может надо не учитывать символ перевода строки и попробовал написать Код:
FoundPos := PrevTextLen - 1*(REdit.Lines.Count); Так сдвигается в другую сторону: photo_2023-11-06_13-30-34_result.jpg Как добиться того, чтобы сдвига не было? И получалось вот так: photo_2023-11-06_13-30-28_result.jpg PS. На скриншотах ещё одна подсветка - синяя. Не обращайте на неё внимания. Из кода убрал для сокращения сообщения. |